Скрипты содержимого расширения Chrome не вводятся в первую очередь, как отлаживать? - PullRequest
2 голосов
/ 21 декабря 2011

Когда я запускаю браузер Chromium, используя:

chromium-browser --load-extension = / path / to / my / extension --user-data-dir = / path /в / chrome / profile --app = http://localhost/somepage

некоторые скрипты содержимого не внедряются на страницу.Эти сценарии определены в файле манифеста следующим образом:

"content_scripts" : [{
                "matches" : [ "http://*/*", "https://*/*" ],
                "js" : [ "content/s1.js", "content/s2.js", "content/s3.js", "content/s4.js" ],
                "run_at" : "document_end"
}]

При проверке страницы я вижу, что только s1.js и s4.js были успешно введены.После перезагрузки страницы все сценарии вставляются правильно, и мое расширение работает как положено.

В чем может быть причина этого и как отладить это?

Редактировать:

Эти скрипты содержимого (которые иногда не внедряются) ссылаются на «документ» в начале.Кажется, будто я заверну их во что-то вроде:

setTimeout(function() { document. ... }, 5000);

Они всегда вводятся, как и ожидалось.Возможно ли, что документ недоступен, даже если в манифесте было указано "run_at": "document_end"?

Спасибо!

1 Ответ

1 голос
/ 03 февраля 2013

Лучше сделать это:

Создать 1 скрипт content.js:

/* inject script */
try {
var script1 = document.createElement("script");script1.type = "text/javascript";script1.src = chrome.extension.getURL("/js/injected1.js");document.getElementsByTagName("head")[0].appendChild(script1);
var script2 = document.createElement("script");script2.type = "text/javascript";script2.src = chrome.extension.getURL("/js/injected2.js");document.getElementsByTagName("head")[0].appendChild(script2);
var script3 = document.createElement("script");script3.type = "text/javascript";script3.src = chrome.extension.getURL("/js/injected3.js");document.getElementsByTagName("head")[0].appendChild(script3);
var script4 = document.createElement("script");script4.type = "text/javascript";script4.src = chrome.extension.getURL("/js/injected4.js");document.getElementsByTagName("head")[0].appendChild(script4);
} catch(e) {}

в manifest.json:

"content_scripts" : [{
            "matches" : [ "http://*/*", "https://*/*" ],
            "js" : [ "content.js" ],
            "run_at" : "document_end"

}]

...