body onload和jQuery ready order MS IE&边缘

时间:2018-01-11 07:24:22

标签: jquery internet-explorer microsoft-edge

当我在一个简单的页面(没有图像等)中同时拥有两个事件(即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事件。)

0 个答案:

没有答案