7

私の Firefox 拡張機能は、クリックなどのイベントを生成します。応答として、Web アプリケーションは新しいウィンドウを開こうとします。ただし、ポップアップ ブロッカーが作動すると、Firefox によってブロックされます。

私の質問は、拡張機能によって生成されたイベントが「信頼できる」ものとして扱われず、ユーザーのクリック時に同じように扱われないのはなぜですか? その動作を達成するためのバックドアはありますか?

4

1 に答える 1

7

編集:この回答はひどく時代遅れです。これは、Firefox 57 の時点でサポートされなくなった従来の拡張機能を指します。Web 拡張 API に基づく拡張機能には、信頼できるイベントを生成する方法がありません

はい、拡張機能によって生成されたイベントは常に信頼されます。つまり、イベントは、信頼できるイベントを必要とするアクションをトリガーできるようになります (例: ブラウザーのタブを切り替えるための Ctrl-Tabevent.isTrustedイベント)。ただし、それらは合成されたイベントのままであり、ネイティブ (OS レベル) のイベントが関連付けられていないことを意味します。また、ポップアップ ブロッカーはネイティブ イベントで動作するため、拡張機能によって生成されたイベントは表示されません。truekeypress

の代わりにnsIDOMWindowUtils.sendMouseEventToWindow()を使用できますdocument.createEvent()。このメソッドはテスト用であり、ネイティブ イベントも生成します。ポップアップ ブロッカーにはこれで十分です。

var utils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                  .getInterface(Components.interfaces.nsIDOMWindowUtils);
utils.sendMouseEventToWindow("click", 10, 20, 0, 1, 0);
于 2012-07-12T22:08:38.093 に答える