1

forge.message.broadcast を使用するたびに、すぐに大量のエラーが表示されます。

Port error: Could not establish connection. Receiving end does not exist.

開いているタブの数 + 開いている開発者コンソールの数に直接関係しているようです。ただし、スタック トレースはまったくなく、追跡することは不可能のようです。

4

1 に答える 1

1

の定義を見ると、これは正常です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開いている各タブにメッセージを送信しようとします。URLのみを除外するchrome-extensionため、開いているウィンドウにもメッセージを送信しようとしdeveloper-toolsます。ただし、タブにリスナーがない場合は、「ポート エラー: 接続を確立できませんでした。受信側が存在しません。」が表示されることがあります。Chrome のそのような各タブのエラー - forge.message.broadcast メッセージに応答することを期待しない場合、これは予期されたものであり、問​​題ありません。

反応が期待できる場合は、まず適切なタブで使用する必要がありforge.message.listenます。

于 2012-10-15T04:47:18.930 に答える