当我在一个简单的页面(没有图像等)中同时拥有两个事件(即body onload和jQuery ready)时,body onload事件会在IE和MS Edge中的jQuery文档准备好之前触发。其他浏览器的常见顺序是相反的。为什么?如何实现正常秩序?
示例代码:
$(function() {
console.log('ready - second in ie');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body onload="console.log('body.onload - first in ie');">
</body>
编辑:
这一刻我通过这种方式解决了这个问题:而不是<body onload="Foo();">
我用:
$(function(){
window.setTimeout(function() {
Foo();
}, 0);
});
现在Foo()
会在其他document.ready脚本之后触发,无论我何时注册它。
(这是旧项目的解决方案,无法重写和测试所有onload事件到document.ready事件。)