愚蠢的问题,但当我写 window.onload =alert('hi')
时,我收到了警报。
但是,如果我测试它的存在:if (window.onload)alert("exists")
,我会得到undefined
。怎么会这样?
最佳答案
您正在调用 alert
方法(立即执行)并将其返回值 (undefined
) 分配给 onload
。
如果您想为 onload
分配一个函数,那么您需要分配一个实际的函数,而不是任何旧函数调用的返回值。
例如:
onload = function () {
alert('hi');
};
或
function createHiAlertFunction() {
return function () {
alert('hi');
}
}
onload = createHiAlertFunction();
但是,一般来说,您应该避免将事物分配给事件处理程序属性,而应使用事件绑定(bind)方法。这样,如果您想要调用多个函数,您就不必处理事情。
window.addEventListener('load', function () {
alert('hi');
});
请注意,旧式 IE 不支持此功能,因此您可能希望使用提供抽象层(包括对旧式专有 Microsoft 方式的支持)的众多库(例如 YUI 或 jQuery)之一。
关于javascript - 是还是不是 : window. onload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10785918/