【发布时间】:2012-05-18 11:32:16
【问题描述】:
我正在尝试在 chrome 中创建页面操作扩展。我有一个与单击页面操作时显示的弹出窗口相对应的 html 页面。我在这个 html 页面中包含了一个脚本文件popup.js。在此页面上,我尝试向后台 js 文件 background.js 发送消息。问题是我只从popup.js 调用sendRequest 一次,但我在后台页面中多次收到它。我正在那里执行文件操作,由于并发访问而导致脚本错误。我在此处粘贴与消息传递相关的代码
扩展文件 - popup.js
chrome.extension.sendRequest({"intent" : "read"}, function (message) {
console.log(message);
});
背景页面 - background.js
(function(){
var fileName = "credentials.txt";
var fileSystem;
function checkUrl(tabId, changeInfo, tab) {
if(/https?:\/\/.*?\/olc/.test(tab.url)) {
chrome.pageAction.show(tabId);
chrome.extension.onRequest.addListener(function (request, sender, callback) {
callback("printed");
});
}
}
chrome.tabs.onUpdated.addListener(checkUrl);
})();
在这种情况下,监听器被调用了 4 次。回调将被第一次调用。接下来的 3 次它给出了一个错误,说 Could not send response: Cannot send a response more than once per chrome.extension.onRequest listener per document (message was sent by extension kaejjpmlibijbgbgcfodphlkcjjkmjlk). 有人可以帮我解决这个问题吗?
【问题讨论】:
标签: google-chrome google-chrome-extension chromium message-passing