在我的html中,我有2个script标签:
<script src="first.js"></script>
<script src="second.js"></script>
字符串
first.js是一个很大的库文件,可以使funcFromFirstJs
可用。我想在它准备好的时候调用这个函数。有时候,first.js在second.js执行之前没有足够的时间完成加载。我目前使用的递归策略如下:
//第二个. js
function callIfReady() {
if (typeof funcFromFirstJs === 'function') {
funcFromFirstJs();
} else {
// wait for a few seconds and callIfReady() again
}
}
型
还有更好的办法吗?我知道window event 'load' which is supposed to fire when all sources in html including images have finished loading completely
。我也知道document event DOMContentLoaded which happens when tags are loaded, but may happen before their content completely finishes loading
。因为first.js
是一个库文件,所以我也不想在first.js
的底部添加我的js代码。因此,具体地说,我只想等待first.js完全加载完毕。然后在second.js
中运行这段代码。not
当然关心其他东西(如图像或其他脚本标记)的加载进度;这就是为什么not
希望使用window event: load
的原因。
1条答案
按热度按时间pbpqsu0x1#
如果你是我的同事,我首先会问你为什么决定使用这种方法,为什么你不使用任何一个可以有效地将所有脚本合并到一个文件中的文件夹,以及通过树抖动来最小化其大小。
然而,如果你仍然想实现你的问题中描述的行为,你可以使用的方法之一是:从第二个脚本添加第一个脚本,并等待'onload'事件触发。像这样:
字符串
有了这个稍微有点棘手的解决方案,你应该能够从函数'callWhenReady'中的
first.js
脚本执行任何你需要的东西;P.S.当然,在这种情况下,你应该从HTML中删除`。