Есть задача с сделать расширение браузера, изменяющее контент страницы. Использую Firefox.
manifest.json:{
"manifest_version": 2,
"name": "Extension",
"version": "0.1",
"icons": {
"48": "icons/icon-48.png"
},
"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["/content_scripts/jquery.min.js" ]
}
],
"permissions": [
"activeTab",
"tabs",
"storage"
],
"browser_action": {
"default_icon": "icons/icon-32.png",
"theme_icons": [{
"light": "icons/icon-32-light.png",
"dark": "icons/icon-32.png",
"size": 32
}],
"default_title": "Extension",
"default_popup": "popup/extension.html"
}
}
extension.html<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="extension.css"/>
</head>
<body>
<div id="popup-content">
<div class="button insert">Insert</div>
</div>
<script src="extension.js"></script>
</body>
</html>
extension.js:function listenForClicks() {
document.addEventListener("click", (e) => {
function data_insert(tabs) {
console.log('==========Extension.js==========');
browser.tabs.sendMessage(tabs[0].id, {
command: "insert"
}).then(response => {
});
}
function onError(error) {
console.log(`Error: ${error}`);
}
if (e.target.classList.contains("insert")) {
browser.tabs.query({active: true, currentWindow: true})
.then(data_insert)
.catch(onError);
}
});
}
function reportExecuteScriptError(error) {
document.querySelector("#popup-content").classList.add("hidden");
document.querySelector("#error-content").classList.remove("hidden");
console.error(`Failed to execute extension content script: ${error.message}`);
}
browser.tabs.executeScript({file: "/content_scripts/background.js"})
.then(listenForClicks)
.catch(reportExecuteScriptError);
background.js:function insert () {
var foo = new Date;
$('body').append('<div>'+foo+'</div>');
}
browser.runtime.onMessage.addListener((message) => {
if (message.command === "insert") {
insert();
}
});
Вопрос в следующем: при клике на "insert" в окошке расширения вставляется div с датой:
но самой переменной данном окружении не существует:
Есть ли возможность выйти из подобной изоляции?