我正在製作一個Chrome擴展程序,該擴展程序可從API抽取大量數據並使用它來修改頁面上的內容。由於數據量非常大,我希望能夠在瀏覽器中保存一次,並且能夠訪問它,而不是在每次加載頁面時執行API調用。保存並訪問API會導致Chrome擴展程序中的變量
這是我的理解,這可以通過將API調用放入後臺頁面,然後從內容腳本中的後臺頁面調用變量來完成。我也嘗試將數據存儲在本地存儲中。這兩種方法都不適合我,我不明白我做錯了什麼。
在我的背景頁面的代碼中,我將API結果存儲在一個變量中。我稱其爲內容腳本是這樣的:
var background = chrome.extension.getBackgroundPage();
var myData = background.APIData; //where APIData is the variable I set in the background page
我嘗試使用本地存儲看起來是這樣的:
//Background page
chrome.storage.sync.set({'value': APIData}, function() {
// Notify that we saved.
console.log('APIData saved to storage');
});
//Content script
var myData = localStorage["APIData"];
由於這一刻,延長甚至沒有加載在頁面使用我試圖訪問本地存儲的代碼。該擴展將加載其他方法,但數據似乎並不存在。我知道我的API調用正在工作,因爲擴展工作時,我把它全部放在內容腳本中。但是這會在每次頁面加載時調用API時產生問題。請幫助!
這仍然不適合我?修改我的代碼如下 //後臺頁面 chrome.storage.sync.set({'value':myData},function(){ //通知我們已保存 console.log('myData saved to storage' ); }); //內容腳本 var someData = chrome.storage.sync.get(null,function(storage){storage.myData}); – mostlynew
確保您在manifest.json文件中設置了「存儲」權限集。 –
是的,我這樣做:「權限」:[「storage」,「tabs」,「activeTab」,「」,「*:// */*」] –
mostlynew