如何确定脚本是否已从Chrome扩展程序注入到文档中

时间:2014-10-14 19:32:47

标签: javascript google-chrome dom google-chrome-extension

我正在编写Chrome扩展程序,并使用以下代码从我的内容js中注入脚本。

function appendScript() {
var script = document.createElement('script');
script.setAttribute("type", "application/javascript");
script.textContent = "window.alert = function(msg) { stopOperation = true; var evt=document.createEvent('CustomEvent'); evt.initCustomEvent('StopOperation', true, true, ''); document.dispatchEvent(evt); return true; }; ";
document.documentElement.appendChild(script);
}

如何确保上述脚本只注入一次?

2 个答案:

答案 0 :(得分:2)

只需添加一个ID,然后在注入之前检查它是否已经存在,如果是,则不要注入它:

以下是一个示例:

function appendScript() {
    var script = document.createElement('script');
    script.id = "my-extension-script";
    script.setAttribute("type", "application/javascript");
    script.textContent = "window.alert = function(msg) { stopOperation = true; var evt=document.createEvent('CustomEvent'); evt.initCustomEvent('StopOperation', true, true, ''); document.dispatchEvent(evt); return true; }; ";
    document.documentElement.appendChild(script);
}

var no_script = !document.getElementById("my-extension-script");

if (no_script) appendScript();

答案 1 :(得分:0)

我会设置一个特定于您的应用程序的属性(例如您的插件ID),并在尝试添加脚本之前检查该元素。