我构建了一个Chrome扩展,它将数据从背景页面保存到localStorage(使用chrome.storage.sync.set
)。是否有可能从我的网站访问我的Chrome扩展localStorage?
现在,假设我想建立一个网站并从本网站访问localStorage上的扩展数据,是否可以从网站域访问这些数据?也许我可以添加一些东西到清单文件,以允许?
我构建了一个Chrome扩展,它将数据从背景页面保存到localStorage(使用chrome.storage.sync.set
)。是否有可能从我的网站访问我的Chrome扩展localStorage?
现在,假设我想建立一个网站并从本网站访问localStorage上的扩展数据,是否可以从网站域访问这些数据?也许我可以添加一些东西到清单文件,以允许?
您必须将内容脚本注入您的网站,然后让后台脚本将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
,则网页稍后将能够读取它,反之亦然。
嗯,我不认为你可以这样做。包括Chrome扩展在内的浏览器上的应用程序工作在沙盒中,因此无法访问其他资源。 –