我有一个Chrome扩展程序,其中弹出消息显示内容脚本 - 非常简单。以下内容适用于macOS(Chrome 61.0.3164.100),但不适用于Windows 10(Chrome 61.0.3163.100):
aSearch.js(弹出式广告)
function sendMessage(comment){
window.close(); //Close popup.
console.log("In send message: " + comment);
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {method: "insertComment", comment: comment}, function(response) {
// console.log(response.farewell);
});
});
}
然后是content.js:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log('In content script after receiving request to insertcomment...');
if (request.method == 'insertComment'){
etc...
我可以提供更多代码......但即使background.js显示相关活动,“console.log”也不会触发。
aSearch.js是一个html弹出窗口,用于替换初始的...后登录(不确定这是否重要)。这是在background.js中完成的:
chrome.browserAction.setPopup({ //Sets popup to last visited
popup: 'aSearch.html' // Open this html file within the popup.
});
关于什么可以使消息传递中断的任何指导?我是否应该采用不同的方法来处理在许多选项卡中使用的常量(频繁)消息传递?
为什么Chrome for Windows采取不同的行动?
旁注:我实际上更新了Chrome for Windows,因为我写了这个问题......在更新突然消息传递工作之后,一点点,然后又回到了休眠状态。
更新问题: 我在顶部的aSearch.js弹出窗口添加了更多代码......
我认为我在关闭弹出窗口之前可以发送消息...并且它有时会工作(并且在我的macOS开发机器上),因为计算机速度很快。在Windows上,我的Mac上的VM,不是那么快......
明天我会在消息的响应中移动关闭...等待消息回复。
这看起来有道理吗?
答案 0 :(得分:0)
这里的问题确实是在成功发送邮件之前无法关闭弹出窗口。
咄。
但挑战是,在我的机器上,消息在窗口关闭之前成功发送。所以我没有发现这个错误。
我让消息接收器确认成功,然后关闭弹出窗口。像魅力一样。