Google chrome extension 在扩展中使用captureVisibleTab后,对内容脚本的回调中断
我有一个很奇怪的问题。我有一个网页截图的扩展。我创建了它作为参考。它工作得很完美,整个世界都很快乐 扩展与内容脚本来回通信,并使用不推荐使用的API进行通信。为了防止扩展使用过时的代码,我进行了以下替换:Google chrome extension 在扩展中使用captureVisibleTab后,对内容脚本的回调中断,google-chrome-extension,content-script,Google Chrome Extension,Content Script,我有一个很奇怪的问题。我有一个网页截图的扩展。我创建了它作为参考。它工作得很完美,整个世界都很快乐 扩展与内容脚本来回通信,并使用不推荐使用的API进行通信。为了防止扩展使用过时的代码,我进行了以下替换: chrome.tabs.sendRequest(...) -> chrome.tabs.sendMessage(...) chrome.extension.onRequest(...) -> chrome.runtime.onMessage(...) chrome.extensio
chrome.tabs.sendRequest(...) -> chrome.tabs.sendMessage(...)
chrome.extension.onRequest(...) -> chrome.runtime.onMessage(...)
chrome.extension.sendRequest(...) -> chrome.runtime.sendMessage(...)
这样做会破坏扩展,它不再工作。如果我使用不推荐使用的代码,那么一切都会恢复正常
我做了一些跟踪,发现扩展在以下代码处中断:
内容脚本
chrome.runtime.sendMessage(sender.id, data, function(captured) {
window.clearTimeout(cleanUpTimeout);
console.log("came back from extension...");
if (captured) {
// Move on to capture next arrangement.
processArrangements(); //function defined elsewhere
} else {
// If there's an error in popup.js, the response value can be
// undefined, so cleanup
cleanUp(); // function defined elsewhere
}
});
扩展
chrome.runtime.onMessage.addListener(function(message, sender, cb){
appendLog("received message from content script. callback is " + cb);
if (message.msg === 'capturePage') {
capturePage(message, sender, cb);
} else {
console.error('Unknown message received from content script: ' + message.msg);
}
});
function capturePage(data, sender, cb) {
... // some code omitted for clarity
chrome.tabs.captureVisibleTab(
null, {format: 'png', quality: 100}, function(dataURI) {
if (dataURI) {
var image = new Image();
image.onload = function() {
screenshot.ctx.drawImage(image, data.x, data.y);
//appendLog("calling callback function. callback is: " + cb);
cb(true); // **callback isn't called on content script**
};
image.src = dataURI;
}
});
}
为了清晰起见,我省略了一些代码,缺少的代码与此无关。让我解释一下你在上面看到了什么:
谢谢是的。。您只需要一行代码。等一下,我去拿一个链接。请不要删除这个问题,重要的是要有一个记录,当从老阿皮亚人迁移时,这个记录会被打破,这很尴尬:(我完全错过了文档中关于保持频道开放的那一行。对不起,伙计们。@Xan谢谢你们指出那个人。我可以删除它,尽管正如你们所说,在迁移代码时,这种副作用并不明显。