我正在撰写Chrome扩展程序,其中扩展程序页面与后台页面进行通信,并且还会从用户那里获得一些输入。
我有这样的事情:
contentScript.js:
chrome.runtime.onConnect.addListener(function(port) {
if (port.name === "myPort") {
port.onMessage.addListener(function(message) {
if (message.type === "myMessage") {
window.console.log("Received MyMessage");
var input = window.prompt("input please");
port.postMessage({ data: input});
return true;
}
}
port.onDisconnect.addListener(function(arg) {
window.console.log("Port disconnected! ");
window.console.log(arg);
});
}
});
extension.js:
chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {
let port = chrome.tabs.connect(tabs[0].id, {name: "myPort"});
port.onMessage.addListener(function(data) {
doSomethingWithInput(data.input);
});
port.postMessage({ type: "myMessage" });
});
我看到的是“端口断开连接!”#39;一出现提示弹出窗口即显示消息。如果我注释掉提示内容并硬编码输入一切正常。
这是Chrome长期以来的预期行为吗?'端口?如果是这样,为什么?对于我试图做的事情,是否有解决方法?
API文档描述了何时关闭某个端口here,但我不清楚其中任何一个都适用。提示消息是否计入导航页面?