我构建了一个 chrome 扩展,将数据从后台页面保存到 localStorage(使用chrome.storage.sync.set
)。
现在,假设我想建立一个网站并从网站访问 localStorage 上的扩展数据,是否可以从网站域访问这些数据?也许我可以在清单文件中添加一些内容以允许这样做?
我构建了一个 chrome 扩展,将数据从后台页面保存到 localStorage(使用chrome.storage.sync.set
)。
现在,假设我想建立一个网站并从网站访问 localStorage 上的扩展数据,是否可以从网站域访问这些数据?也许我可以在清单文件中添加一些内容以允许这样做?
我在这里假设您知道内容脚本和后台脚本之间的消息传递过程。
现在,我不认为您的网站可以向扩展程序发出请求并从中“提取”数据,但您当然可以让您的扩展程序将数据“推送”到您的网站。
您可以这样做:
内容脚本
内容脚本应检查网站中打开的网站是否是您的网站,例如 www.yourwebsite.com
if (currentUrl == "www.yourwebsite.com")
{
....
}
如果确实是你的网站,从后台脚本中拉取需要的数据
if (currentUrl == "www.yourwebsite.com")
{
chrome.extension.sendRequest({ "getLocalStorageData": true, "dataFieldName": "favouriteColor" }, handleLocalStorageResult);
}
function handleLocalStorageResult(dataValue)
{
.....
}
在handleLocalStorageResult方法中接收到数据后,将数据注入页面的html,以便您网站的javascript可以读取它
if (currentUrl == "www.yourwebsite.com")
{
chrome.extension.sendRequest({ "getLocalStorageData": true, "dataFieldName": "favouriteColor" }, handleLocalStorageResult);
}
function handleLocalStorageResult(dataValue)
{
var localStorageDataDiv = $('<div>').appendTo('body');
localStorageDataDiv.attr('id', 'extensionData');
localStorageDataDiv.html(dataValue);
}
您网站的 Javascript
现在您网站的 javascript 可以读取数据
var data = $('#extensionData').html();
alert('My Extension's LocalStorage Data is ' + data);
您必须将内容脚本注入您的网站,然后让您的后台脚本将 localStorage 传递给您的内容脚本。至于你的内容脚本和你网站上的脚本之间的通信,你必须要有创意。
迄今为止的答案没有提到内容脚本和网页共享它们的localStorage
对象。如果您的内容脚本写入localStorage
,则网页稍后将能够读取它,反之亦然。