2017-05-11 11 views
0

私はEdgeエクステンションを開発中です。フレーム文書(トップ文書ではなく、トップ文書はうまくいきます)からコンテンツスクリプトにメッセージを送る必要があります。フレームとEdge Extensionコンテンツスクリプトとの間の通信方法は?

`contentscript.js 
window.addEventListener("message", function(event) { 
    console.log("window top message...event:"); 
    console.log(event); 
});` 

をして、フレーム文書からメッセージを送る:

コンソールパネルで

window.top.postMessage("Hi, I am from frame", "*").

、私はwindow top message...event:を見ることができますし、ブラウザがページをリロードし、次のよう
。メッセージがブロックされたようです。
The extension can be got from github。再現する
手順:
ロード拡張、オープンGoogle、オープンコンソールパネルは、フレームに切り替え、

window.top.postMessage("Hi, I am from frame", "*").

は誰も助けてもらえタイプ?

+0

「ログを保存」を有効にして、実際のエラーメッセージを投稿してください。 –

+0

エラーメッセージはありません。 – BurningFish

答えて

1

あなたが背景ページを持って、そしてあなたのcontentscript.jsbrowser.オブジェクトへのアクセスを持っている場合は、cheap'n'easyの方法は、内線にして戻ってそのようなメッセージをバウンスするかもしれません:

contentscript.js 
browser.runtime.sendMessage({name: 'bounce', payload: {name: hello}}); 

background.js 
browser.runtime.onMessage.addListener(function (request, sender) { 
    if (request.name === 'bounce') { 
    browser.tabs.sendMessage(sender.tab.id, request.payload); 
    } 
}); 

とだけ聞きますあなたのcontentscriptに{name: hello} topを含むすべてのフレームにこのメッセージが表示されます。

+0

入力いただきありがとうございます。しかし、私はbrowser.extension.sendMessageがEdgeでサポートされているとは思っていません。https://docs.microsoft.com/en-us/microsoft-edge/extensions/api-support/supported-apis#windowsからチェックできます。 – BurningFish

+0

@BurningFish申し訳ありません、それは 'browser.runtime.sendMessage'である必要があります。 https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/sendMessage –

+0

こんにちは、Anatoly、browser.runtime.sendMessageは、バックグラウンドページとコンテンツスクリプトの間でメッセージを渡すのに役立ちます。 Webページifamesとコンテンツスクリプトの間でメッセージを渡す際に役立たない。私は、ifameドキュメント内のwindow.top.postMessageでメッセージを送ることを望みます。失敗します。 Edge team https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12016669/にバグを提出しました。あなたのご意見ありがとうございます。 – BurningFish

関連する問題