如何在扩展后台页面访问localStorage
How to access localStorage in extension background page?
我有一个chrome扩展,在内容脚本中设置JavaScript localStorage中的字符串值。我已经测试了它是通过抓取它并显示它来设置的。在加载后的同一页面上,我仍然可以访问javascript控制台中存储的字符串。如果我去任何其他选项卡js控制台或当我试图访问它在我的其他扩展的背景页面(浏览器操作已被点击后)它返回null。
扩展名1 contentscript.js
embeded.addEventListener
(
"message",
function(message)
{
localStorage.setItem("pdf", message.data);
loadPDF(message.data);
},
false
);
extension 2 background.js
chrome.browserAction.onClicked.addListener(function(tab) {
if (tab.url.substr(tab.url.length - 4) === ".pdf")
{
if (localStorage.getItem("pdf") !== null)
{
alert("boomy");
}
}
});
localStorage
在扩展页面(背景,选项,弹出)之间共享,但不是内容脚本。并且肯定不会在两个扩展之间共享!
你有两个半选项。有两个独立的扩展,只有一个选项。
选项一:依赖消息传递
当您需要在后台脚本和内容脚本之间传递一些值时,您可以通过消息传递来实现。如果你只需要在一个方向上传递它,效果会特别好。
contentscript.js:
embeded.addEventListener(
"message",
function(message)
{
chrome.runtime.sendMessage(extensionTwoId, {pdf: message.data});
loadPDF(message.data);
},
false
);
background.js:
chrome.runtime.onMessageExternal.addListener(
function(message, sender, sendResponse) {
if(sender.id !== extenstionOneId) return;
if(message.pdf) localStorage.setItem("pdf", message.pdf);
}
);
/* ... */
选项二:不适用于两个扩展chrome.storage
.
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 访问布局信息是否也会导致浏览器重排
- Javascript,访问一个主要对象模块模式中的每个对象
- 如何访问声音管理器2创建的声音对象
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- 如何将localStorage值设置为false
- JavaScript Pub/Sub属性访问问题
- 拒绝访问IE11中的localStorage,但仅在桌面模式下(不在城域模式下)
- 无法访问localStorage.getItem(JSONObj)的值
- 如何在同一时间或下次访问时使用www.为同一域创建localStorage
- 如何从php实现的js脚本传递访问令牌到扩展的localStorage
- 访问localStorage的最佳方法
- localStorage访问本地文件
- ios 10无法访问ionic中的localStorage
- PhoneGap localStorage访问数据的时间太长
- 如何在扩展后台页面访问localStorage
- 为什么localStorage不能作为对象访问?
- 仅在首次访问时显示>if(!localStorage.getItem(“runOnce”)){触发锚链接
- VBA:从InternetExplorer对象访问LocalStorage
- 访问其他控制器中的localStorage变量数据