3

我构建了一个 chrome 扩展,将数据从后台页面保存到 localStorage(使用chrome.storage.sync.set)。

现在,假设我想建立一个网站并从网站访问 localStorage 上的扩展数据,是否可以从网站域访问这些数据?也许我可以在清单文件中添加一些内容以允许这样做?

4

3 回答 3

0

我在这里假设您知道内容脚本和后台脚本之间的消息传递过程。

现在,我不认为您的网站可以向扩展程序发出请求并从中“提取”数据,但您当然可以让您的扩展程序将数据“推送”到您的网站。

您可以这样做:

内容脚本

内容脚本应检查网站中打开的网站是否是您的网站,例如 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);
于 2014-08-10T01:31:19.307 回答
0

您必须将内容脚本注入您的网站,然后让您的后台脚本将 localStorage 传递给您的内容脚本。至于你的内容脚本和你网站上的脚本之间的通信,你必须要有创意。

于 2013-06-24T03:12:33.033 回答
0

迄今为止的答案没有提到内容脚本和网页共享它们的localStorage对象。如果您的内容脚本写入localStorage,则网页稍后将能够读取它,反之亦然。

于 2014-08-14T07:34:59.443 回答