Javascript Chrome扩展-脚本加载事件?

Javascript Chrome扩展-脚本加载事件?,javascript,javascript-events,google-chrome-extension,Javascript,Javascript Events,Google Chrome Extension,是否可以获取事件或其他方式来了解特定脚本何时加载到页面中 例如,我有一个页面操作,如果jquery存在并且已完成加载,则应该执行该操作。对于整个web,这里似乎存在类似的堆栈溢出问题,我认为这也适用于您的扩展: 似乎可以设置脚本的src和onload元素,以便在脚本加载时获取事件。我可以想出两种方法: 1查看是否包含jQuery脚本:在contentScript.js中: 2查看jQuery是否已定义:在contentScript.js中: 如果站点作者使用了错误的文件名,则1将失败。如果他们重

是否可以获取事件或其他方式来了解特定脚本何时加载到页面中


例如,我有一个页面操作,如果jquery存在并且已完成加载,则应该执行该操作。

对于整个web,这里似乎存在类似的堆栈溢出问题,我认为这也适用于您的扩展:


似乎可以设置脚本的src和onload元素,以便在脚本加载时获取事件。

我可以想出两种方法:

1查看是否包含jQuery脚本:在contentScript.js中:

2查看jQuery是否已定义:在contentScript.js中:

如果站点作者使用了错误的文件名,则1将失败。如果他们重新定义了window.jQuery,或者我弄乱了javascript事件api,那么2将失败,因为我不是javascript的高手


您还可以通过在检测是否包含jQuery之前将jQuery作为内容脚本来简化上述操作

我最后监听了DOMContentLoaded,然后执行了所需的操作


感谢您的所有输入

难道您不能等待window.onload,然后再查找window.jQuery吗?@Teepeemm没有那么简单,因为内容脚本不会从页面中向其公开window.jQuery。不适用。OP尝试检测一个不是由他添加的标记。这将在页面加载完成时通知您。但确定是否存在特定脚本是一个独立且更具挑战性的问题。
if ( document.querySelector('script[src*="jquery"]') ) {
    // probably has jquery
}
window.addEventListener('jQueryFound',function() {
    // probably has jquery
});
var scriptTag = document.createElement('script');
scriptTag.textContent
   = "if ( window.jQuery ) { window.dispatchEvent(new Event('jQueryFound')); }"
document.head.appendChild(scriptTag);