2

FireFox アドオンでキーダウン/キーアップ イベントを追跡することは可能ですか? 次のシナリオに似たものを実装したいと思います。

  • 修飾キーパネルを押し続けると表示されます
  • これらの修飾キーを押しながら他のキーを押すと、パネルでいくつかのアクションが発生します
  • 修飾キーを放すと、パネルが消える
4

1 に答える 1

7

そのためには、各ブラウザー ウィンドウにイベント リスナーを登録する必要があります。高レベルの SDK API ではブラウザー ウィンドウに直接アクセスできませんが、そのためには低レベルのモジュール、特に (現在ドキュメント化されていない)sdk/keyboard/observerモジュールを使用する必要があります。すべてのブラウザ ウィンドウで主要なイベントをリッスンできるため、次のようなものが機能するはずです。

// Register key event handlers in each browser window
var {observer} = require("sdk/keyboard/observer");

observer.on("keydown", function(event) {
  // Ignore events that have been handled elsewhere (e.g. by the web page)
  if (event.defaultPrevented)
    return;

  if (...)
    panel.show();
});
observer.on("keyup", function(event) {
  // Ignore events that have been handled elsewhere (e.g. by the web page)
  if (event.defaultPrevented)
    return;

  if (...)
    panel.hide();
});

ノート:

  • sdk/keyboard/observerモジュールは完全に文書化されていないため、いつでも変更または完全になくなる可能性があります。
  • 元々、ここで提案されたソリューションは、現在は推奨されていないモジュールWindowTrackerから使用されていました。sdk/window-utilsブラウザ ウィンドウを実際に自分で見たい場合は、イベントsdk/windows/observerをリッスンできる (これも文書化されていない) モジュールを使用します。ブラウザ ウィンドウを区別する機能がモジュール経由で利用できるようになりました。また、関数を使用して、既に開いているウィンドウを考慮する必要があります。ウィンドウ オブザーバーは自動的にそれを行いません。opencloseisBrowser()sdk/window/utilswindows()
于 2012-04-28T19:49:14.100 に答える