簡體   English   中英

無法在我的Google Chrome擴展程序中使用localStorage值

[英]Can't use localStorage value in my Google Chrome extension

我編寫了一個Chrome擴展,為一些輸入元素添加了一個char計數器。 沒有用戶界面,如果用戶在特定頁面上,它只會注入字符計數代碼。

輸入中應出現多少個字符是有限制的。 我最初編寫它只顯示字符數,但后來我覺得如果用戶可以選擇查看它們剩下多少個字符會很好。 所以我決定創建一個選項頁面。

在我的選項頁面的某個時刻,我這樣做:

localStorage["count"] = count; // count is the string "countUp" or "countDown"

事實證明我無法從contentscript.js訪問options.html的localStorage所以我不情願地創建了一個background.html頁面,它監聽來自contentscript的請求並返回內容腳本要求的localStorage值。

在內容中(簡化)

var countOption;

chrome.extension.sendRequest(
    {method: "localStorage", key: "count"},
    function(response){
        countOption = response.data;
        console.log(countOption); // returns "countUp"
    }
);

console.log(countOption); // returns undefined

if(countOption === "countUp") {
    doSomething();
} else {
    doSomethingElse();
}

背景頁面

<script type="text/javascript">
    chrome.extension.onRequest.addListener(
        function(request, sender, sendResponse) {
            if(request.method === "localStorage") {
                sendResponse({data: localStorage[request.key]});
            } else {
                sendResponse({});
            }
        }
    );
</script>

問題是我無法為countOption分配一個值,以便在我的其余腳本范圍內可以訪問它。 當我在chrome.extension.sendRequest的響應中分配它時, this是窗口對象,所以我嘗試全局聲明countOption ,但在我的其余腳本中仍未undefined

誰能看到我哪里出錯了? 謝謝。

會這樣的嗎?

function executeCount(countOption)
{
console.log(countOption); // returns undefined

if(countOption === "countUp") {
    doSomething();
} else {
    doSomethingElse();
}
}

chrome.extension.sendRequest(
    {method: "localStorage", key: "count"},
    function(response){
        executeCount(response.data);
    }
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM