Я использую сценарий содержимого (content_script.js
) для добавления сценария (main.js
) в веб-страницу.
манифест. json:
{
"manifest_version": 2,
"content_scripts": [
{
"run_at": "document_end",
"js": ["content_script.js"]
}
],
"options_page": "options.html",
"options_ui": {
"page": "options.html",
"open_in_tab": true
},
"web_accessible_resources": [
"main.js"
],
"permissions": ["tabs", "storage"]
}
content_script. js:
var s = document.createElement('script');
s.src = chrome.extension.getURL('main.js');
(document.head||document.documentElement).appendChild(s);
s.onload = function() {
s.parentNode ? s.parentNode.removeChild(s) : null;
};
У меня есть некоторые данные, хранящиеся в chrome.storage.local
(заданные в файле options.js
), которые мне нужно прочитать внутри доступный через Интернет ресурс (в данном случае main.js
).
Единственное решение, которое я нашел до сих пор, - это создать пользовательское событие в скрипте содержимого и прослушать его в файле main.js
, например,
content_script. js:
chrome.storage.local.get(foo, function(result) {
var event = new CustomEvent("ExtensionOptionsRead", { detail: result });
window.dispatchEvent(event);
});
main. js:
window.addEventListener("ExtensionOptionsRead", function(event) {
window.extensionOptions = event.detail
})
Но это так ' не работает Firefox, когда я получаю Error: Permission denied to access property xyz
.
Кто-нибудь знает другой способ отправки данных из скрипта контента на доступный в Интернете ресурс?