每當我使用forge.message.broadcast我看到一堆錯誤立刻道:爲什麼forge.message.broadcast會導致`端口錯誤:無法建立連接。在Chrome中接收結束不存在?
Port error: Could not establish connection. Receiving end does not exist.
這似乎是直接關係到打開的選項卡+開放開發控制檯數量的數量。但是,沒有任何堆棧跟蹤,並且似乎無法追查。
每當我使用forge.message.broadcast我看到一堆錯誤立刻道:爲什麼forge.message.broadcast會導致`端口錯誤:無法建立連接。在Chrome中接收結束不存在?
Port error: Could not establish connection. Receiving end does not exist.
這似乎是直接關係到打開的選項卡+開放開發控制檯數量的數量。但是,沒有任何堆棧跟蹤,並且似乎無法追查。
這是正常的,看着forge.message.broadcast
定義:
forge.message.broadcast = function (r, s, t, q) {
chrome.windows.getAll({
populate: true
}, function (u) {
u.forEach(function (v) {
v.tabs.forEach(function (x) {
if (x.url.indexOf("chrome-extension:") != 0) {
var w = chrome.tabs.connect(x.id);
if (t) {
w.onMessage.addListener(function (y) {
t(y)
})
}
w.postMessage({
type: r,
content: s
})
}
})
})
});
var p = chrome.extension.connect();
if (t) {
p.onMessage.addListener(function (u) {
t(u)
})
}
p.postMessage({
type: r,
content: s
})
}
forge.message.broadcast
將嘗試將消息發送到每個打開的選項卡。它只會過濾出chrome-extension
的網址,因此它也會嘗試發送任何打開的developer-tools
窗口。但是,如果選項卡上沒有監聽器,則可能會收到「端口錯誤:無法建立連接,接收端不存在」。 Chrome瀏覽器中的每個此類標籤都會出現錯誤 - 這是預期的,並且如果是,您不希望它們響應forge.message.broadcast消息。
如果您確實希望他們做出迴應,您必須先在之前在適當的選項卡中使用forge.message.listen
。