0

Safari 拡張機能フレームワークは、拡張機能間のメッセージ パッシングを明示的にサポートしていません。拡張機能が実行されていることをページに知らせずに、これを回避するための実行可能なハックを探しています。

提案 (テストされていません):

  1. 1 つの拡張機能は、 openTab() を使用して about:blank#extension-channel への非表示のタブを開きます。もう 1 つは、そのタブを URL で検索して見つけます。それらは、通信するためにそのページの要素を生成および消費します。

  2. 拡張機能がドメイン間で Cookie を読み取ることができる場合、一方は extension-homepage.com でランダム IDを使用して Cookie を設定し、もう一方はそれを読み取ります。次に、「」という名前の DOM イベントを作成するextension-message-[the random ID]ため、ページはリッスンできません。

  3. Safari 開発者に onRequestExternal を API に追加するよう請願してください ;)

別のアプローチを考えることができますか?上記のいずれかが機能するようになりましたか?

4

2 に答える 2

0

拡張機能 Aが、拡張機能 B によって Javascript で実装された WebSocket サーバーへのWebSocket接続を開くようにします。 socket.ioWebSocket-Nodeなどを参照してください。

于 2012-05-09T15:44:05.917 に答える
0

window.postMessageを使用して、現在のタブのページを仲介として拡張機能間でメッセージを渡すことができます。

https://github.com/canisbos/ClickClackで概念実証として 2 つの非常に単純なデモ拡張機能を共有しました。それらをインストールすると、一方の拡張機能のツールバー ボタンをクリックすると、もう一方のボタン イメージが反転することがわかります。

于 2012-04-18T00:38:57.640 に答える