1

次のように、パッケージ化されたアプリに取り組んでいます。

  • ウィンドウ 1:: webview があり、postMessage メソッドを使用して webview とウィンドウの間で通信します。

(ウィンドウ 1) の Webview から、親ウィンドウ以外の別のウィンドウ (つまり、ウィンドウ 2) にメッセージを送信することは可能ですか?! または別の方法で、バックグラウンド スクリプトは postMessage をリッスンできますか?

Webview内のページからappWindow.sourceで遊んでみましたが、管理できませんでした。出来ますか?何か案は?

4

2 に答える 2

0

とを使用chrome.runtime.sendMessagechrome.runtime.onMessageて、webview から受信したメッセージを他のウィンドウにブロードキャストできます。

したがって、webview を持つウィンドウは、他のウィンドウにメッセージを送受信するためのプロキシとして機能します。次のようなコードになります。

 window.addEventListener('message', (event) => {
    event.preventDefault();
    const message = event.data;
    console.log(`viewer window is broadcasting message from webview: ${JSON.stringify(event.data)}`);
    chrome.runtime.sendMessage(event.data);
});

const webview = document.querySelector('webview');
webview.addEventListener('loadstop', () => {
    webview.contentWindow.postMessage({from: 'app', cmd: 'init'}, webview.src);
});

function handleMessage(message) {
    if (message.from === 'anotherwindow') {
        console.log('webview window received message from another window, sending it to webview');
        webview.contentWindow.postMessage(message, webview.src);
    }
}

chrome.runtime.onMessage.addListener(handleMessage);
于 2018-02-16T20:29:09.030 に答える