Javascript chrome.request.sendRequest()中document.addEventListener()存在问题
我有一个GoogleChrome扩展,我在其中创建了一个后台页面,查询扩展的设置,在我的例子中,我只是查询一个启用/禁用的变量 首先,这里是manifest.json:Javascript chrome.request.sendRequest()中document.addEventListener()存在问题,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我有一个GoogleChrome扩展,我在其中创建了一个后台页面,查询扩展的设置,在我的例子中,我只是查询一个启用/禁用的变量 首先,这里是manifest.json: { "name": "Foo", "version": "0.1", "description": "", "icons": { "128": "128.png", "48": "48.png", "16": "16.png" },
{
"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");
};
});
}());
当我运行它时,我可以看到
document.addEventListener("beforeload", function(event) {
console.log("in beforeload callback");
}, true);
当事件侦听器嵌套在
chrome.extension.sendRequest
中时,它似乎从未注册过?如果我无法使用此路由查询我的应用程序设置,是否有更好的方法来执行此操作?在加载事件触发后连接事件侦听器
(function() {
// load event has already fired.
...
}());
相反,您应该只执行将放置在事件侦听器中的if
中的代码