2013-06-22 56 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,則網頁稍後將能夠讀取它,反之亦然。

相關問題