2014-10-14 2 views
2

Я пишу расширение Chrome и используя следующий код, чтобы вставить сценарий из моего содержимого js.Как определить, был ли сценарий уже введен в документ из расширения Chrome?

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

Просто добавьте идентификатор к нему, то перед инъекцией чек, если он уже существует, и если да, то не вводить его:

Вот пример:

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(); 
+0

Еще раз спасибо, что было отлично :) – bluenile

+0

@bluenile Добро пожаловать –

0

Я бы установил атрибут с чем-то конкретным для вашего приложения (например, ваш идентификатор плагина) и проверил его, прежде чем пытаться добавить ваш скрипт.

Смежные вопросы