在 JSP 頁面中嘗試根據後端傳遞的 ${requestScope.err} 值判斷是否彈窗提示,代碼寫在 window.onclod 中卻完全不生效。
window.onclod = function() { // 拼寫錯誤:onclod ≠ onload
if ("${requestScope.err}" == 0) {
alert("失敗");
// ...
}
};
根因: window.onclod 不是任何標準事件,瀏覽器根本不會觸發它。正確的頁面載入完成事件是 window.onload(全小寫 L)。
window.onload = function() {
// 注意:EL 表達式在 JSP 編譯階段已解析為具體值,這裡直接比較字串/數字
var errValue = "${requestScope.err}"; // 例如輸出為 "0" 或 "1"
if (errValue === "0" || errValue === 0) { // 建議同時兼容字串與數字
alert("失敗");
hidden(document.getElementById("qipao"), 5, -0.01);
}
};
window.addEventListener('load', fn) 可綁定多個處理器,不會互相覆蓋Number(errValue) === 0 比較<script> 統一綁定,便於維護與壓縮一個字母之差(l vs c),導致整段邏輯靜默失效。養成複製標準事件名稱、控制台檢查錯誤的習慣,能避開 90% 此類低級錯誤。