0

我的一切都在我的擴展工作,除了一件事!我想通過popup.js清除這個擴展的本地存儲。這是一個簡單的擴展,可以保存某個域的表單數據。從popup.js中清除Chrome擴展localStorage

目前,在我的內容腳本(save.js)中,我通過localStorage [key]訪問本地存儲,但似乎我無法通過popup.js來做到這一點,我得到了一個'undefined',我假設它預期的行爲。

我試過localStorage.clear();從我的popup.js,但這沒有效果。大概是因爲它希望從擴展內部清除不存在的localStorage?

如何訪問並清除save.js從popup.js使用的本地存儲?

popup.js

document.getElementById('clearAllData').addEventListener('click', clear); 
 

 
function clear(){ 
 
\t localStorage.clear(); 
 
} 
 
    
 

的片段,我如何save.js保存數據

function saveTicket(ticket, contents) { 
 
\t localStorage[ticketID] = contents; 
 
}

回答

2

您沒有正確使用回調。你需要異步傳遞函數。例如:

function clear(){ 
    chrome.storage.local.clear(function(obj){ 
     console.log("cleared"); 
     }); 
} 

但是它也可能是這樣的。 Chrome存儲已經是本地的。

function clear(){ 
    chrome.storage.sync.clear(function(obj){ 
     console.log("cleared"); 
     }); 
} 
+1

這不起作用。我不確定我瞭解obj應該是什麼?難道這不應該完全擦除存儲而不需要傳遞對象? PSA - 我不確定我在說什麼。 – jblz

+0

這是函數解析後來自擴展的響應。由於您不需要數據,因此可以將其保留爲空。 – Mifune

+0

謝謝,但數據仍然存在。它仍然不會執行任何操作 – jblz

0

您應該使用chrome.storage,而不是localStorage的。在內容腳本中使用localStorage時,它是否屬於頁面,而不是擴展名。但是,當您在內容腳本中使用chrome.storage時,它是您的擴展的存儲。

相關問題