成为或不成为:window.onload

时间:2012-05-28 14:03:08

标签: javascript

愚蠢的问题,但是当我写window.onload = alert('hi')时,我收到警报。

但是,如果我测试它的存在:if (window.onload) alert("exists")我得到undefined。怎么样?

4 个答案:

答案 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,则表示该页面尚未完全加载。