我构建了一个chrome扩展程序,可以从后台页面将数据保存到localStorage(使用chrome.storage.sync.set
)。
现在,假设我想建立一个网站并从网站访问localStorage上的扩展数据,是否可以从网站域访问这些数据?也许我可以在清单文件中添加一些内容以允许它?
答案 0 :(得分:1)
我在此假设您了解内容脚本和后台脚本之间的消息传递过程。
现在,我不认为您的网站可以向分机发出请求,并且"拉"来自它的数据,但你肯定可以使用你的扩展程序" push"数据到您的网站。
这是你可以做到的:
内容脚本
内容脚本应检查网站中打开的网站是否是您的网站,例如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);
答案 1 :(得分:0)
您必须将内容脚本注入您的网站,然后让您的后台脚本将localStorage传递给您的内容脚本。至于您的内容脚本与网站上的脚本之间的通信,您必须具有创造性。
答案 2 :(得分:0)
迄今为止的答案并未提及内容脚本和网页共享其localStorage
个对象。如果您的内容脚本写入localStorage
,则该网页稍后可以阅读,反之亦然。