我有一個谷歌瀏覽器擴展,其中我創建了一個後臺頁面查詢我的擴展的設置,在我的情況下,我只是查詢爲啓用/禁用變量。chrome.request.sendRequest()中的document.addEventListener()問題
首先,這裏是在manifest.json:
{
"name": "Foo",
"version": "0.1",
"description": "",
"icons": {
"128": "128.png",
"48": "48.png",
"16": "16.png"
},
"content_scripts": [{
"all_frames": true,
"js": ["foo.js"],
"matches": ["http://*/*", "https://*/*"],
"run_at": "document_start"
}],
"background_page" : "background.html",
"browser_action": {
"default_icon": "icons/19x19.png",
"default_title": "Foo",
"default_popup": "popup.html"
}
}
後臺頁面的JavaScript看起來像這樣:
FooApp = {};
FooApp.enabled = 1;
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
if (request.getSetting == "enabled") {
sendResponse({result: FooApp.enabled});
}
}
);
,並在我的內容腳本,我查詢後臺頁面,看看是否腳本啓用&應該執行:
(function() {
chrome.extension.sendRequest({getSetting: "enabled"}, function(response) {
console.log("in sendRequest callback");
if (response.result == 1) {
console.log("in response.result = 1");
document.addEventListener("beforeload", function(event) {
console.log("in beforeload callback");
}, true);
} else {
console.log("in response.result = 0");
};
});
}());
當我運行此,我可以看到控制檯日誌「中response.result = 1」
- 「在sendRequest將回調」
- ,但我不明白的控制檯日誌「在beforeload回調」,這在「beforeload」事件偵聽器的回調中。
有什麼,我失蹤....我期待前負荷回調觸發,看到控制檯日誌消息,但我不知道。我試圖查詢我的應用程序,以檢查它是否在我的beforeload eventlistener中處理任何代碼之前啓用。
的代碼時,我刪除比beforeload事件偵聽器註冊,例如:其他一切都正常運行
document.addEventListener("beforeload", function(event) { console.log("in beforeload callback"); }, true);
看來,當它嵌套在一個
chrome.extension.sendRequest
內的事件監聽器永遠不會被註冊?如果我不能使用此路線查詢我的應用程序設置,有沒有更好的方法來做到這一點?