是否可以从我的网站访问我的chrome扩展localStorage?

时间:2013-06-22 13:40:02

标签: html5 google-chrome-extension local-storage web-storage

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

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

3 个答案:

答案 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,则该网页稍后可以阅读,反之亦然。