Javascript addEventListener(“加载”)在Chrome中工作不正常? document.querySelector(“#jquery”).addEventListener(“加载”,onLoadJQuery); 函数onLoadJQuery(){ document.querySelector(“#js cookie”).setAttribute(“src”,“/js.cookie.js”); document.querySelector(“#js cookie”).addEventListener(“加载”,onLoadJSCookie); } 函数onLoadJSCookie(){ document.querySelector(“#vk info”).setAttribute(“src”,“/vk info.js”); }
我一直在使用这种检查,它在Firefox中也能正常工作 基本上jQuery加载到我的主模板中,然后在它的子模板中我也加载了一些脚本,但结果是。因此,首先应该检查jQuery是否已加载,然后加载JS Cookie,加载后再加载我的自定义脚本。但在Chrome上,由于某些原因,它不起作用 我可以看到jquery是在DOM中加载的,它的id是Javascript addEventListener(“加载”)在Chrome中工作不正常? document.querySelector(“#jquery”).addEventListener(“加载”,onLoadJQuery); 函数onLoadJQuery(){ document.querySelector(“#js cookie”).setAttribute(“src”,“/js.cookie.js”); document.querySelector(“#js cookie”).addEventListener(“加载”,onLoadJSCookie); } 函数onLoadJSCookie(){ document.querySelector(“#vk info”).setAttribute(“src”,“/vk info.js”); },javascript,addeventlistener,Javascript,Addeventlistener,我一直在使用这种检查,它在Firefox中也能正常工作 基本上jQuery加载到我的主模板中,然后在它的子模板中我也加载了一些脚本,但结果是。因此,首先应该检查jQuery是否已加载,然后加载JS Cookie,加载后再加载我的自定义脚本。但在Chrome上,由于某些原因,它不起作用 我可以看到jquery是在DOM中加载的,它的id是#jquery。但即使加载了,我的其他脚本也不会加载。它们不获取任何src属性并保持为空。我三次检查了他们的消息来源,一切都是正确的。特别是因为它们在没有Even
#jquery
。但即使加载了,我的其他脚本也不会加载。它们不获取任何src属性并保持为空。我三次检查了他们的消息来源,一切都是正确的。特别是因为它们在没有EventListener的情况下加载良好
谢谢你的帮助,也许我错过了什么。但是在Firefox中一切都正常。因为我们看不到您是如何加载jQuery脚本标记的,所以很难确定,但问题可能是在注册处理程序之前,
load
事件已经触发了
不同的浏览器有不同的加载顺序,因此它们之间的加载顺序可能不同。如果将脚本标记的src
设置在其load
处理程序之前,则无法保证处理程序将运行,即使标记加载成功。它在某些浏览器中似乎工作可靠,但在新版本中,随着采用新的加载策略,这种情况很容易改变
如果无法确保在src
之前设置脚本的load
处理程序,则可以通过检查运行jQuery脚本的副作用来检测加载是否已经发生,例如:
<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");
}
因为我们看不到您是如何加载jQuery脚本标记的,所以很难确定,但问题很可能是
load
事件在注册处理程序之前已经触发了
不同的浏览器有不同的加载顺序,因此它们之间的加载顺序可能不同。如果将脚本标记的src
设置在其load
处理程序之前,则无法保证处理程序将运行,即使标记加载成功。它在某些浏览器中似乎工作可靠,但在新版本中,随着采用新的加载策略,这种情况很容易改变
如果无法确保在src
之前设置脚本的load
处理程序,则可以通过检查运行jQuery脚本的副作用来检测加载是否已经发生,例如:
<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");
}
您在何处使用jquery的
id
定义元素?@DerekPollard位于另一个模板中,该模板是我定义其他脚本的模板的父模板。我在问题中说明了这一点。id为jquery
的元素在DOM中,我可以在那里看到它。这是同一页,只是两个不同的小树枝文件。完全没有区别。您在何处使用jquery的id
定义元素?@DerekPollard位于另一个模板中,该模板是我定义其他脚本的模板的父模板。我在问题中说明了这一点。id为jquery
的元素在DOM中,我可以在那里看到它。这是同一页,只是两个不同的小树枝文件。完全没有区别。我只是把那些脚本移到DOM的更高位置,它神奇地工作了,我不知道是什么原因。案件结案。不管怎样,谢谢你。事实上,它仍然在不同的情况下帮助了我。我只是把那些脚本移到了DOM的更高位置,它神奇地工作了,我不知道是什么原因。案件结案。不管怎样,谢谢你。事实上,它在不同的情况下仍然帮助了我。