javascript - 是还是不是 : window. onload

标签 javascript

愚蠢的问题,但当我写 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/

相关文章:

javascript - 网络调用失败的 Webpack5 模块联合后备

javascript - node js - 从回调中获取结果

javascript - 将表单复制到剪贴板并设置格式

javascript - react JSX 解析器错误

javascript - 如何使用javascript将html5主元素作为父节点来删除主元素子节点

javascript - React-native get方法返回值

javascript - 如何通过搜索 "name"/key 获得 "value"?

javascript - Sequelize hasMany 和belongsTo 问题

javascript - 如何使用 JQuery 选择多个段落?

javascript - 如何在多行 <textarea> 中实现自动完成?