我構建了一個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擴展在內的瀏覽器上的應用程序工作在沙盒中,因此無法訪問其他資源。 –