微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Chrome DevTools 中依次注入和运行 jQuery

如何解决在 Chrome DevTools 中依次注入和运行 jQuery

以下将 jQuery 注入到 Chrome 开发者工具中。

jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
// ... give time for script to load,then type
jQuery.noConflict();

虽然它运行良好,但我的目标是之后按顺序运行 jQuery,而不必分离代码

我试过了:

setTimeout(function(){
var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
},2000);
jQuery.noConflict();

结果:未捕获的引用错误:未定义 jQuery

第二次运行成功。


也就是说,我的下一次尝试是:

setTimeout(function(){
setTimeout(function(){
var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
},1000);
jQuery.noConflict();
},2000);

结果:未捕获的引用错误:未定义 jQuery

第二次运行成功。


我该怎么做才能使延迟生效?

解决方法

通常是这样的:

const jq = document.createElement('script');
jq.onload = () => {
  jQuery.noConflict();
};
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js";
document.head.appendChild(jq);

在设置 .onload 之前设置 load(或者您想设置 .src 事件处理程序),因为某些浏览器实际上不需要 script文档并将在设置 .src 后立即加载。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。