1

現在、Safari 拡張機能を構築しています。3 つのボタンがあるシンプルなポップオーバー ページがあります。これらのボタンをクリックしたら、グローバル ページで、localStorage の操作やその他のいくつかの操作を含むいくつかのアクションを実行する必要があります。

ポップオーバーからグローバル ページにメッセージをディスパッチする方法が見つからないようです。ポップオーバーからコンテンツ スクリプトへのディスパッチに関するトピックは山ほどあるようですが、グローバル ページには何もありません。

それはおそらく非常に単純で、何かが足りないだけです。助けていただければ幸いです。

4

1 に答える 1

7

ポップオーバーとグローバル ページの間でメッセージ パッシングを使用する必要はありません。それらはsafari.extensionオブジェクトを共有するため、一方のコンテキストから他方のコンテキストにアクセスできます。

ポップオーバーから、 を介してグローバル ページの機能やその他のオブジェクトにアクセスできますsafari.extension.globalPage.contentWindow。たとえばfoo、グローバル ページに関数がある場合は、ポップオーバーからsafari.extension.globalPage.contentWindow.foo().

グローバル ページから、 を介してポップオーバーのオブジェクトにアクセスできます。safari.extension.popovers[i].contentWindowここiで、 はポップオーバーのインデックスです。

ちなみに、ポップオーバーとグローバル ページは同じlocalStorageオブジェクトを共有しているため、たとえばsafari.extension.globalPage.contentWindow.localStorageポップオーバーから使用する必要はありません。localStorage単独で、グローバル ページが使用するのと同じストアにアクセスします。

于 2012-09-30T22:12:49.327 に答える