2013-06-22 54 views
2

我构建了一个Chrome扩展,它将数据从背景页面保存到localStorage(使用chrome.storage.sync.set)。是否有可能从我的网站访问我的Chrome扩展localStorage?

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

+1

嗯,我不认为你可以这样做。包括Chrome扩展在内的浏览器上的应用程序工作在沙盒中,因此无法访问其他资源。 –

回答

0

您必须将内容脚本注入您的网站,然后让后台脚本将localStorage传递到您的内容脚本。至于内容脚本与您网站上的脚本之间的沟通,您必须具备创意。

1

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

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

这是你如何做到这一点:

内容脚本

内容脚本应该检查,如果该网站在网站开通为您的网站,说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); 
0

回答的问题没有提到内容脚本和网页分享localStorage对象。如果您的内容脚本写入localStorage,则网页稍后将能够读取它,反之亦然。

相关问题