Javascript - 加载外部 javascript 后 DOM 准备好了吗?

标签 javascript external document-ready

当我的外部脚本加载完成后,DOM 是否始终准备就绪?

<head>
    <script type="text/javascript" src="base.js"></script>
</head>

在base.js 中,我有一个加载外部脚本的对象。它使用以下方法来执行此操作:

var head = document.getElementsByTagName("head")[0],
    scriptElement = document.createElement("script");

scriptElement.type = "text/javascript";
scriptElement.onreadystatechange = function () {
    if (this.readyState === "complete") onModuleLoaded();
};
scriptElement.onload = onModuleLoaded;
scriptElement.src = "externalScript.js";
head.appendChild(scriptElement);

现在,当所有外部脚本都已加载时,将调用回调函数。我的问题是:这个回调函数是否适合放置 我的其余 javascript 代码在哪里?此代码需要准备好 DOM。

我的脚本也使用 jQuery。但我不认为我可以使用

$(document).ready(function () { ... });

因为在我的测试中,它在加载脚本之前触发。但是,我不知道情况是否会一直如此。如果可以的话,我的回调函数适合我的 DOM 操作 javascript 代码。

但是,如果我的脚本可以在 DOM 准备好操作之前加载,我需要找到另一种方法。

感谢您的阅读!

最佳答案

检查jQuery.holdReady() 。如果您尝试通过 getScript 加载外部 js,那么您可以轻松做到这一点。

延迟就绪事件,直到加载自定义插件:

$.holdReady( true );
$.getScript( "externalScript.js", function() {
  $.holdReady( false );
});

关于Javascript - 加载外部 javascript 后 DOM 准备好了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33390922/

相关文章:

jQuery - $(document).ready 函数中的函数

jquery - 我可以在单个 html 页面中多次使用 jquery 的 $(document).ready() 吗?

javascript - 简单的 JavaScript 数学问题

javascript - 同一个JS程序在C++中的不同实现

javascript - 更改对象的嵌套属性

javascript - 如何在浏览器中隐藏黑莓光标?

ajax - jqPlot:从 json 文件打印 pointLabels

vb.net - 将 'Copy to Output Directory' 的默认选项设置为 'Copy Always'

网络驱动器上的 MySQL 数据目录?

jquery - 为什么 $(document).ready() 永远不会触发而 $(window).load() 会触发?