1

假设我的页面某处有以下两个脚本标签:

<script>
    window.addEventListener("DOMContentLoaded",
        function()
        {
            console.log("DOM loaded");
        }
    );
</script>
...
<script>
    $(document).ready(
        function()
        {
            console.log("Document ready");
        }
    );
</script>

有没有简单的方法来强制 DOMContentLoaded 事件在之前触发$().ready

这是我实际问题的简化示例。我面临的真正问题是 DOMContentLoaded 事件已注册在第三方库中,我将其包含在页面正文的底部,并且我有太多$().ready调用来快速更改它们。从理论上讲,我可以更改window.addEventListenerdocument.addEventListener而不会产生任何问题,但是因为我在页面的头部包含了 jQuery,所以$().ready之前的所有调用仍然触发,如此document.addEventListener("DOMContentLoaded"...)所述,并且我无法合理地移动 jQuery 或第三个的包含位置-派对图书馆。如果可能的话,我还想避免对第三方库进行更改。

4

1 回答 1

1

您可以使用$.holdReady()

<script>
    $.holdReady(true);
    window.addEventListener("DOMContentLoaded", function() {
      console.log("DOM loaded");
      $.holdReady(false);
    });
</script>
...
<script>
    $(document).ready(function() {
      console.log("Document ready");
    });
</script>
于 2017-01-05T18:14:23.433 回答