愚蠢的问题,但是当我写的时候window.onload = alert('hi')
我得到了警报。
但是,如果我测试它的存在:if (window.onload) alert("exists")
我得到undefined
. 怎么来的?
愚蠢的问题,但是当我写的时候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();
但是,一般来说,您应该避免将事物分配给事件处理程序属性,而应使用事件绑定方法。这样,如果您想调用多个函数,您就不必处理事情。
window.addEventListener('load', function () {
alert('hi');
});
请注意,旧的 IE 不支持此功能,因此您可能希望使用提供抽象层的众多库之一(例如 YUI 或 jQuery),该抽象层包括对旧的专有 Microsoft 方式的支持。
window.onload
触发事件。默认情况下它没有值,当一切准备就绪时,它的值由用户设置。如果您没有设置值,它将是undefined
尝试以下操作:
if(typeof window.onload !== "undefined") alert("exists!")
这会显式检查对象上是否存在 onload 属性window
。
编辑:
你看到的undefined
是警报函数的返回值。
你在哪里触发那个脚本?如果 window.onload 返回 false,则表示该页面尚未完全加载。