我正在编写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);
}
如何确保上述脚本只注入一次?
答案 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),并在尝试添加脚本之前检查该元素。