<script id="js-cookie"></script>
<script id="vk-info"></script>
<script>
document.querySelector("#jquery").addEventListener("load", onLoadJQuery);
function onLoadJQuery() {
document.querySelector("#js-cookie").setAttribute("src", "/js.cookie.js");
document.querySelector("#js-cookie").addEventListener("load", onLoadJSCookie);
}
function onLoadJSCookie() {
document.querySelector("#vk-info").setAttribute("src", "/vk-info.js");
}
我一直使用这种检查,并且它在Firefox中有效。
基本上,jQuery是在我的主模板中加载的,然后在其子模板中,我也加载了一些脚本,但因此。因此,首先应该检查是否已加载jQuery,然后加载JS-Cookie,以及在加载时,然后加载我的自定义脚本。但是在Chrome上由于某些原因它无法正常工作。
我可以看到jQuery已加载到DOM中,并且ID为#jquery
。但是即使加载了,我的其他脚本也无法加载。他们没有任何src属性,并保持为空。我对它们的来源进行了三重检查,一切都正确。尤其是因为它们可以在没有EventListener的情况下正常加载。
感谢您的帮助,也许我错过了一些东西。但是在Firefox中,所有功能都可以正常工作。
答案 0 :(得分:1)
由于我们看不到如何加载jQuery脚本标签,因此很难确定,但是问题可能出在注册处理程序之前,load
事件已经触发。 / p>
不同的浏览器具有different strategies to load as fast as possible,因此它们之间的确切加载顺序可能有所不同。如果在脚本标记的src
处理程序之前设置了脚本标记的load
,则即使标记成功加载,也不能保证该处理程序将运行。在某些浏览器中,它似乎可以可靠地运行,但是随着采用新的加载策略,在新版本中很容易更改。
如果不能确保在load
之前设置脚本的src
处理程序,则可以通过检查运行jQuery脚本的副作用来检测负载是否已经发生。 :
if (window.jQuery) {
onLoadJQuery();
} else {
document.querySelector("#jquery").addEventListener("load", onLoadJQuery);
}