Я пытаюсь создать простое расширение chrome, которое вставляет/скрывает div, когда действие браузера (значок расширения) переключается. У меня есть основы работы, но я хотел бы, чтобы расширение оставалось в нем «on-state» (вставляемый div), когда страница перезагружается. Его следует удалять только при переключении.Хранить расширение Chrome на странице reload
В настоящее время при каждой перезагрузке все сбрасывается.
Вот что я до сих пор:
manifest.json
{
"name": "My Extension",
"version": "0.0.1",
"manifest_version": 2,
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_icon": "icon-off.png"
},
"permissions": [
"tabs"
]
}
background.js
toggle = false;
chrome.browserAction.onClicked.addListener(function(tab) {
toggle = !toggle;
var status = 'off';
if(toggle) {
status = 'on';
}
// Toggle the icon
chrome.browserAction.setIcon({path: 'icon-'+status+'.png', tabId:tab.id});
// Execute script & pass a variable
chrome.tabs.executeScript(tab.id, {
code: 'var extension_status = "'+status+'";'
}, function() {
chrome.tabs.executeScript(tab.id, {file: 'inject.js'});
});
});
inject.js
// ID for inserted element
var my_div_id = 'foo';
// The div (returns null if doesn't exist)
var my_div = document.getElementById(my_div_id);
// If on for first time
if(extension_status == 'on' && !my_div) {
// Create div
var div = document.createElement('div');
div.id = my_div_id;
div.textContent = 'hello';
// Insert into page
document.body.appendChild(div);
}
// When toggled off hide
else if(extension_status == 'off') {
my_div.style.display = 'none';
}
// When Toggled back on again show again
else {
my_div.style.display = 'block';
}
Должен ли я передать значение обратно в файл background.js? или есть лучший способ справиться с этим?
Am Другие вещи, прямо сейчас ваш статус в фоновом режиме не на вкладке (даже если значок, который вы установили, за вкладку, а состояние сценария контента, по необходимости, за вкладку). Подумайте об этом для начала. – Xan