愚蠢的问题,但是当我写window.onload = alert('hi')
时,我收到警报。
但是,如果我测试它的存在:if (window.onload) alert("exists")
我得到undefined
。怎么样?
答案 0 :(得分:7)
您正在调用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专有方式的支持。
答案 1 :(得分:1)
window.onload
会发生一起事件。默认情况下它没有值,当一切准备就绪时需要用户设置它的值。如果您未设置值,则为undefined
答案 2 :(得分:0)
尝试以下方法:
if(typeof window.onload !== "undefined") alert("exists!")
显式检查window
对象上是否存在onload属性。
编辑:
您看到的undefined
是警报功能的返回值。
答案 3 :(得分:-1)
你在哪里解雇那个剧本?如果window.onload返回false,则表示该页面尚未完全加载。