これまでにも、ウィンドウの機能についてはいくつか見ていますが、 このセクションでは、さらにいくつかの機能について見ていきたいと思います。
別のウィンドウを作成する
XUL のアプリケーションでは、最初のウィンドウと同じ方法で 2 つ目のウィンドウを作成することが可能です。 このために必要なのは、そのウィンドウのコードを記述した 2 つ目の XUL ファイルを作成することだけです。 HTML の場合と同様に、2 つ目のウィンドウを開くためには window.open()
関数が使用できます。 この関数は、新しく開いたウィンドウへの参照を返します。 この参照を使うことで、新しく開いたウィンドウの関数を呼び出すことが可能になります。
open
関数は引数を 3 つ取ります。 最初の引数には開きたいファイルの URL、 2 番目にはウィンドウの内部名、 3 番目には表示に関するフラグのリストを指定します。 フラグ「chrome
」は、ウィンドウをクロムファイルとして開くために指定する必要があるので重要です。 「chrome
」フラグを引数で指定しない場合には、ファイルはブラウザウィンドウのコンテンツとして開かれることになります。
例を示します。
var myWin = window.open("chrome://findfile/content/findfile.xul","findfile","chrome");
幅と高さを指定する
ウィンドウに要素を追加すると、いつもウィンドウの幅が新しい要素に応じて拡張されることに気付いていると思います。 ウィンドウは、実際には、伸縮可能で配置方向のデフォルトが垂直であるボックスにすぎません。 明示的に、直接
タグに、幅と高さを指定することも可能です。 もちろん、この場合のウィンドウは、指定のサイズで表示されます。 指定を取り除けば、サイズはウィンドウにある要素から決定されることになります。window
<window id="findfile-window" title="Find Files" width="400" height="450" xmlns="https://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
この例では、ウィンドウは 400 ピクセルの幅と 450 ピクセルの高さで開かれます。 このときには、このサイズのウィンドウを埋めるために必要な要素がない場合でも、 余った領域を空白で埋めて、このサイズでウィンドウが開かれることになります。 また逆に、要素が多すぎる場合でも、ウィンドウが要素を表示するために必要な大きさまで拡大されることはありません。 このために、利用者はダイアログをリサイズしなければならなくなります。 ウィンドウの幅と高さを指定するときは、ウィンドウが小さすぎたり大きすぎたりしないように注意する必要があります。 加えて、利用者が別のテーマやロケールを使用しているかもしれないということも考慮する必要があります。
サイズを指定する場合、幅と高さの両方を指定しなければならないことに注意してください。 片方しか指定しない場合、もう片方には 0 が設定されます。 ウィンドウのサイズを自動的に設定するためには、幅と高さの両方を省略する必要があります。
なお、幅と高さは、ウィンドウの初期サイズを指定しているにすぎません。 ウィンドウがリサイズ可能な場合、利用者はウィンドウをリサイズして、別のサイズに変更するかもしれません。
他のウィンドウの機能
以下に window.open
関数の 3 番目の引数で渡すことが可能なフラグの一部を示します。 ただし、オペレーティングシステムによっては、すべてがサポートされない可能性もあります。 ここには、JavaScript のリファレンスに記載されている HTML の場合に指定可能な任意のフラグを指定することも可能です。 また、「dialog=no
」のような形式で、「no
」を設定することで機能を無効にすることも可能です。
- alwaysLowered
- ウィンドウは、常に他のウィンドウの背面に表示されます。
- alwaysRaised
- ウィンドウは、常に他のウィンドウの前面に表示されます。
- centerscreen
- ウィンドウが開かれたとき、画面の中央に表示されます。
- dependent
- ウィンドウは、開き元のウィンドウと、常に相対的な位置関係を維持して表示されます。つまり、開き元のウィンドウを移動した場合には、新しいウィンドウも相対的な位置関係を維持するために移動することになります。
- dialog
- ウィンドウは、ダイアログボックス用の外観で表示されます。
- modal
- ダイアログをモーダルにします。モーダルウィンドウが閉じられるまでは、開き元のウィンドウを操作することができなくなります。
- resizable
- 利用者はウィンドウをリサイズできます。
関連ページ : DOM window.open() リファレンス
次のセクションでは、補助的なダイアログを開く方法について見ていきます。