IE中的$(window).load()?

时间:2012-03-10 23:15:56

标签: javascript jquery internet-explorer

最近我遇到了一个神秘的问题,IE(6-8)一直在给我一个错误。我不知道这是不是问题,但我认为是。

jQuery included website中打开F12开发人员工具,输入

$(window).load(function(){
     alert("Wont able to see me");
});

将弹出一个错误:

  

“无法获取属性'slice'的值:object为null或undefined”

我做错了什么,或其他什么???

3 个答案:

答案 0 :(得分:7)

我最近找到了解决IE无法识别$(window).load() ...

的解决方法
window.onload = function() {
    alert("See me, hear me, touch me!");
};

这与$(function(){})略有不同,因为它在加载所有元素后执行,而不是在DOM准备好时。

我最近在另一个项目中实现了它,它运行得非常好。

答案 1 :(得分:2)

对于仍然遇到此问题的任何人,如果侦听器位于jquery ready函数内部,则IE11(仅我测试过的一个)不会触发load事件。因此,将加载功能拉到就绪功能之外,它将在IE11中触发。

//this is bad
$(() => { //jquery ready
    window.onload = () => { //wont fire in IE
        cosole.log('window loaded'); 
    }
});

//this is good
$(() => { //jquery ready
    cosole.log('dom ready'); 
});

window.onload = () => { //will fire in IE
    cosole.log('window loaded'); 
}

答案 2 :(得分:-1)

IE10和IE9的最新jQuery(1.7.1)对我来说不会产生这样的错误。

作为旁注; 如果您希望在dom准备就绪时执行某些操作; 试试这种方式;

$(function(){
     alert("Wont able to see me");
});

我相信这是将函数附加到domready事件的标准约定。

参考:jQuery Documentation