我有一个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");
}
}
});
答案 0 :(得分:2)
localStorage
在扩展程序页面(后台,选项,弹出窗口)之间共享,但不是内容脚本。 并且肯定不会在2个扩展程序之间共享!
你有两个半选项。有2个独立的扩展名,只有一个选项。
选项一:依赖消息传递。
当您需要在后台和内容脚本之间传递一些值时,您可以通过消息传递来实现。如果您只需要向一个方向传递它,那就特别有效。
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
。