我已經編寫了一個Chrome擴展,它爲某些輸入元素添加了字符計數器。沒有用戶界面,它只是注入字符計數代碼,如果用戶在特定頁面上。在我的Google Chrome擴展程序中無法使用localStorage值
輸入中出現多少個字符是有限制的。我最初寫它只是顯示字符的數量,但後來我決定,如果用戶可以選擇查看它們剩下的字符數,它會很好。所以我決定創建一個選項頁面。
在我的選項頁某些時候,我這樣做:
localStorage["count"] = count; // count is the string "countUp" or "countDown"
原來我不能從contentscript.js訪問options.html的localStorage的,所以我不情願地創建了一個頁面background.html它偵聽來自contentcript的請求並返回內容腳本要求的localStorage值。
在contentscript(簡化的)
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
。
任何人都可以看到我要去哪裏錯了嗎?謝謝。
你會認爲它會不會?但不,不幸的是,它不。 – MrMisterMan
它究竟做錯了什麼?是不是調用'executeCount'函數?是否引發錯誤?是否設置了response.data? – Femi
實際上報廢。它確實有用!我的其他邏輯中存在一個錯誤。謝謝! – MrMisterMan