Пишу расширение, сталкиваюсь с проблемой, когда плагин обновляю или отключаю, а потом включаю.
Как восстановить соединение?
manifest.json
{
"manifest_version": 3,
"name": "Test",
"description": "Test",
"version": "1.0",
"icons": {
"128": "128х128-started.png"
},
"background": {
"service_worker": "background-wrapper.js"
},
"content_security_policy": {
"extension_pages": "script-src 'self'; object-src 'self'"
},
"action": {
"default_icon": {
"128": "128х128.png"
},
"default_title": "Настройки",
"default_popup": "views/popup.html"
},
"web_accessible_resources": [{
"resources": ["listen.js"],
"matches": [],
"extension_ids": []
}],
"permissions": [
"notifications",
"activeTab",
"storage",
"cookies",
"webRequest",
"tabs",
"history",
"browsingData",
"contextMenus"
],
"host_permissions": ["*://*/*", "<all_urls>"],
"content_scripts" : [{
"matches" : [ "https://developers.facebook.com/apps/*/settings/advanced/*"],
"js" : ["listen.js"]
}],
"externally_connectable": {
"ids": ["*"],
"matches": ["*://*.facebook.com/*"]
}
}
listen.js
(function() {
"use strict";
let str = window.location.href;
let matches = str.match('^(https:\/\/developers\.facebook\.com\/apps\/)([0-9]{1,})(\/settings\/advanced)');
if (matches && matches.length > 2) {
let appId = matches[2];
if (appId) {
setInterval(function () {
chrome.storage.local.get(['clicklead-fb-app-share-keys'], function (data) {
let keys = data['clicklead-fb-app-share-keys'],
time = new Date().getTime();
keys = keys ? keys : [];
if (keys[appId] && time - keys[appId] < 3000) {
appId = null;
stop = true;
return;
}
else {
keys[appId] = new Date().getTime();
chrome.storage.local.set({'clicklead-fb-app-share-keys': keys});
}
});
}, 1000);
}
}
}).call(this);
При перезагрузке расширения, получаю ошибку local is not defined, т.к. приложение уже выгружено и ожидает перезагрузки и внедрения listen.js. Как правильно решить проблему?