Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

nsIWindowMediator

 

ウィンドウメディエータは開いているウィンドウを監視する Mozilla コンポーネントです。 nsIWindowMediator インターフェイスを通じてアクセスできます。 nsIWindowMediator の最も一般的な二つの用途は次のようなものです。

  1. 最前面にある (most recent)、もしくは任意の、指定された型のウィンドウを取得する。
  2. 指定された型の全てのウィンドウを列挙する。

Please add a summary to this article.
  最終更新: Gecko 1.6


下記の例で、type は検索したいウィンドウの型を示しています。ウィンドウに型を指定するには、<window><dialog> のようなトップレベルの要素に windowtype 属性を付加します。

ブラウザウィンドウは navigator:browser というウィンドウの型を持っています。ウィンドウの型に関わらず全てのウィンドウを検索するには、空文字列 "" を渡して下さい。

最前面にあるウィンドウを取得する

次のコードは、指定した型のウィンドウのいずれかを取得したい時や、ある型のウィンドウ (例えばあなたの拡張機能の設定ダイアログ) がすでに開かれているかどうかを調べたい時に役立ちます。

getMostRecentWindow は、 ChromeWindow オブジェクト、もしくは指定された型のウィンドウが開かれていなければ、 null を返します。

var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
                   .getService(Components.interfaces.nsIWindowMediator);
var win = wm.getMostRecentWindow(type);

ウィンドウを列挙する

次のコードは、特定の型の開かれているウィンドウのそれぞれに何かをしなければならない時に使えます。例えば、設定ダイアログの "OK" ハンドラで、開かれているブラウザウィンドウのそれぞれに新しい設定を適用する時などです。

var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
                   .getService(Components.interfaces.nsIWindowMediator);
var enumerator = wm.getEnumerator(type);
while(enumerator.hasMoreElements()) {
  var win = enumerator.getNext();
  // |win| は [Object ChromeWindow] である(|window| と同等)。これに何かをする
}

このコードでは特定の型のウィンドウ全てに対して反復処理を行っており、type で指定するのはウィンドウの型です。例えば、全てのブラウザウィンドウを列挙したければ、"navigator:browser" を指定します。型に関わらず全てのウィンドウを列挙したければ、null を指定します。

注意: nsIWindowMediator のリファレンスページでは、 getMostRecentWindow の戻り値の型と、列挙された要素の型は、 nsIDOMWindow/nsIDOMWindowInternal とされています。実際には、JavaScript のコードから呼ばれる時には、これらのメソッドは普通 (常に?) ChromeWindow オブジェクトを返し、これは上記の両方と他の幾つかのインターフェイスを実装しています。あなたが恐らく慣れ親しんでいるであろう、グローバルオブジェクトの windowChromeWindow 型です。

参考

Interwiki Languages Links

ドキュメントのタグと貢献者

 このページの貢献者: teoli, PWeilbacher, Shoot
 最終更新者: teoli,