2011-12-21 2 views
2

Когда я бегу Chromium браузер с помощью:Скрипты содержания расширения Chrome не вводятся в первую очередь, как отлаживать?

хром-браузер --load-расширение =/путь/к/мой/расширение --user-данных DIR =/путь/к/хром/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 были введены успешно. После перезагрузки страницы все сценарии вводятся правильно, а мое расширение работает так, как ожидалось.

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

Edit:

Эти сценарии контента (которые не вводят иногда) ссылочный документ '' в начале. Похоже, если я заверну их в нечто вроде:

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

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

Спасибо!

+0

Я заметил это тоже. Я считаю, что именно по этой причине я не смог использовать функцию document.ready JQuery. – Soviut

ответ

1

Вы можете лучше сделать это:

Создать 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" 

}]

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