无法在 Microsoft Edge 的 webextensions 中的选项和背景之间进行通信
Can't communicate between options and background in webextensions in Microsoft Edge
我正在为 Microsoft Edge 构建一个扩展。我有一个选项页面,它像这样将一些值保存到 localStorage:
localStorage.setItem('xxx', document.getElementById("xxx").value);
并在后台脚本中检索它们:
var value1 = localStorage.getItem('xxx');
在除 Edge 之外的所有浏览器中都能完美运行。我必须关闭 Edge,重新打开它,然后它才会更新 background.html 的存储。我检查了 options.html 和 background.html,发现更新选项存储不会影响背景,这很奇怪,因为他们必须共享相同的存储空间。
这个问题有解决办法吗?
所以,我找到了适合我的解决方案。
我使用 chrome.storage.local 而不是 localStorage 并获得实时选项-后台通信。
我在options.js中设置了一些值:
chrome.storage.local.set({xxx:document.getElementById('xxx').value});
并在background.js中创建监听器来跟踪实时变化:
chrome.storage.onChanged.addListener(function(changes, namespace) {
for(var key in changes) {
window[key] = changes[key].newValue;
}
});
我正在为 Microsoft Edge 构建一个扩展。我有一个选项页面,它像这样将一些值保存到 localStorage:
localStorage.setItem('xxx', document.getElementById("xxx").value);
并在后台脚本中检索它们:
var value1 = localStorage.getItem('xxx');
在除 Edge 之外的所有浏览器中都能完美运行。我必须关闭 Edge,重新打开它,然后它才会更新 background.html 的存储。我检查了 options.html 和 background.html,发现更新选项存储不会影响背景,这很奇怪,因为他们必须共享相同的存储空间。
这个问题有解决办法吗?
所以,我找到了适合我的解决方案。 我使用 chrome.storage.local 而不是 localStorage 并获得实时选项-后台通信。
我在options.js中设置了一些值:
chrome.storage.local.set({xxx:document.getElementById('xxx').value});
并在background.js中创建监听器来跟踪实时变化:
chrome.storage.onChanged.addListener(function(changes, namespace) {
for(var key in changes) {
window[key] = changes[key].newValue;
}
});