У меня есть расширение chrome, с 2 сценариями контента, введенными манифестом и одним фоновым скриптом.Динамическая загрузка скрипта содержимого (расширение chrome)
{
"manifest_version": 2,
"name": "Test",
"permissions": [
"tabs", "<all_urls>", "activeTab", "storage"
],
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": [
"content/autofill/lib_generic.js",
"content/autofill/lib.js"],
"run_at": "document_end"
}
],
"web_accessible_resources": [
"content/specific_scripts/*"
],
"background": {
"scripts": ["background.js"],
"persistent": false
}
}
lib_generic.js
содержит одну функцию с именем apply_forms(...)
(его описание не важно). Вызывается функция из файла lib.js
. Но эта процедура не работает с несколькими страницами, поэтому для каждой такой страницы у меня есть специальный скрипт - также с только одной функцией с именем apply_forms(...)
.
У меня есть функция, которая принимает текущий домен как ввод и возвращает имя желаемого конкретного скрипта или false
, если используется общий.
Существует слишком много файлов, и логика сложнее, поэтому я не могу просто перечислить все пары (url, script)
в директиве "content_scripts"
(я также не хочу вводить все конкретные файлы в качестве сценария контента).
Я пытался что-то вроде этого в фоновом режиме (обратите внимание, что это только для демонстрации):
var url = ""; //url of current tab
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if(changeInfo.status == "complete") {
var filename = getSpecificFilename(url);
chrome.tabs.executeScript(tabId, {file: filename}, function() {
//script injected
});
}
});
Примечание: getSpecificFilename (...) всегда будет возвращать имя
Но я получаю Unchecked runtime.lastError while running tabs.executeScript: Cannot access a chrome:// URL
на 5-й строчке.
Может ли кто-нибудь помочь мне с этим? Это хороший способ «override` определение функции динамически, или я должен идти другим путем (какой из них, в то время).
Спасибо.
«Непроверенный runtime.lastError во время работы tabs.executeScript: невозможно получить доступ к хром: // URL» => http://stackoverflow.com/questions/19042857/can-you-access-chrome-pages-from-an -extension – kol