ウィンドウの機能の幾つかについては既に見ました。このセクションでは、それ以外の機能を見ることにしましょう。
自分のアプリケーションで 2 つ目のウィンドウを、最初のウィンドウと同じ方法で作ることができます。ウィンドウコードを内部にもつ 2 つ目の XUL ファイルを作るだけです。HTML の場合と同じ様に、2 つ目のウィンドウを開くのに window.open 関数が使えます。この関数は、新しく開いたウィンドウへの参照を返します。この参照は、別のウィンドウの関数を呼び出すのに使用できます。
open 関数は引数を 3 つ取ります。最初は、開きたいファイルの URL です。2 番目は、ウィンドウの内部名です。3 番目は、表示フラグのリストです。フラグ 'chrome' は重要で、ウィンドウをクロムファイルとして開きます。こうしない場合、ファイルは、ブラウザーウィンドウの内容として開かれます。
例えば、次のようにします。
window.open("chrome://findfile/content/findfile.xul","findfile","chrome");
|
要素をウィンドウに追加するといつでも、ウィンドウの幅が新しい要素に適した大きさに拡張されることに気付いていることでしょう。ウィンドウは、実際には、フレキシブルでデフォルトが水平方向のボックスにすぎません。window タグに、直接、幅と高さを指定することもできます。もちろん、これによって、表示されるウィンドウは指定のサイズになります。これを指定しない場合は、サイズはウィンドウ内にある要素によって決まります。
<window id="findfile-window" title="Find Files" width="400" height="450" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> |
この例では、ウィンドウは 400 ピクセルの幅と 450 ピクセルの高さで開かれます。このサイズに適した十分な数の要素がない場合でも、ウィンドウはこのサイズで開かれ、余った領域には何も表示されません。逆に、要素が多すぎる場合、ウィンドウはそれらの要素に適した十分な大きさにはなりません。ユーザーはダイアログをリサイズしなければなりません。ウィンドウの幅と高さを指定するときは、ウィンドウが小さすぎもせず大きすぎもしないように注意する必要があります。
幅と高さの両方を指定しなければならないことに注意して下さい。どちらかを指定しなければ、もう一方は 0 に設定されます。ウィンドウのサイズを自動化するには、幅と高さ両方を指定しません。
幅と高さは、ウィンドウの初期サイズを指定するにすぎません。ウィンドウがリサイズ可能な場合、ユーザーはウィンドウを別のサイズにするかもしれません。
下のフラグは、window.open 関数に 3 番目の引数の一部として渡されます。オペレーティングシステムによっては、そのすべてをサポートしている訳ではないかもしれません。あらかじめ存在するフラグならどれでも使うこともできます。それは JavaScript のリファレンスに載っています。例えば 'dialog=no' のように、それを 'no' に設定することによって機能を無効にすることもできます。
開発の間だけ役に立つ機能に、ウィンドウをデバッグモードにできるというのがあります。これを有効にするには、ウィンドウに debug という名の属性を追加し、その値を true にします。これによって、ウィンドウはボックスとスペーサーを表示します。それによって、何が起きているのか分かります。下の例はこの使い方を示しています。
<window id="findfile-window" title="Find Files" debug="true" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> |
下のイメージは、単純なウィンドウに適用した場合の効果を示しています。
イメージから、多数の余分なボックスがあるのに気付いたかもしれません。これは、個々の XUL 要素が多数のボックスから作られているためです。通常、これらは無視できます。実際には、debug 属性は、ウィンドウだけでなく、どんなボックスにも指定できます。
(進む) 次は、2 次的なダイアログを開く方法を見ることにしましょう。