Windowオブジェクト その2 (open,
close)
今回はWindowオブジェクトのメソッドのうち、openとcloseで遊んでみたいと思います。
1 OPEN
openメソッドは、新しいWindowを開くメソッドです。
書式は以下の通りです。
window.open("URL", "name", ["Features,..."]
);
[ ] は省略可能
URLには新しく開いたWindowに読み込むページのURLを指定します。
nameはそのWindowオブジェクトの名前(nameプロパティになる)を指定します。このnameを使って
ある特定のWindowを参照することができます。
FeaturesはWindowの外観、機能を指定します。以下のような属性を定めることができますが、I.E.では
ほとんど無効のようです。(ネスケでは反映される)
copyhistory [=yes/no] 履歴をコピーする
menubar [=yes/no] メニューバーの表示
scrollbars [=yes/no] スクロールバーの表示
status [=yes/no] ステータスバーの表示
toolbar [=yes/no] ツールバーの表示
height =Pixel ウィンドウの高さ
width =Pixel ウィンドウの幅
通常は、
mywin = window.open ("...", ".....");
のように変数(ここではmywin)を使い、オープンしたウィンドウを変数に格納します。そうすると以後
このウインドウを操作する(サイズの変更やクローズ)時に、この変数を参照して操作することができます。
2 CLOSEとFOCUS、BLUR
closeはWindowを閉じるメソッドです。
ただ単に close(); とするとフォーカスのあるWindowが閉じます。
ある特定のWindowを閉じたい時は、window.open();
の時に割り当てた変数を使います。
例えば、mywinという変数で参照されるWindowを閉じる時は、mywin.close();
と言う風に記述します。
Windowにフォーカスを与えるメソッドがfocusです。一方、フォーカスをはずす時はblurを使います。
mywin.focus();
mywin.blur();
のように記述します。
3 簡単な実例
以下は、Windowのオープン、リロード、クローズのScriptです。
function newopen() では、新しいWindowを開いて(変数mywin1)、resize.htmを読み込んでいます。
そのあと、ウィンドウサイスを縦400、横450に変更し、フォーカスしています。
function.reload() では、最初に作ったWindow(変数mywin1)に、clock.htmという別のページを
読み込ませています。
function winclose(); ではWindowを閉じています。
なお、変数xはWindowが作成されているかどうかチェックするためのフラグ用です(x=1
作成されている)
<SCRIPT Language="JavaScript"> <!-- var x=0,mywin1; function newopen() { mywin1=window.open("resize.htm","win1","top=100,left=250"); mywin1.resizeTo(400,450);mywin1.focus(); x=1; } function reload() { if (x==1) {mywin1.open("clock.html","win1","top=100");mywin1.focus(); // window.open("clock.html","win1","top=100"); という記述も可能だが、Windowは奥に表示される } else {alert("新しいWindowが存在しません。Windowサイズ変更のページを開くをまずクリックして下さい");} } function winclose() { if (x==1) {mywin1.close(); x=0; } else {alert("新しいWindowが存在しません。Windowサイズ変更のページを開くをまずクリックして下さい");} } // --> </SCRIPT> |
もうひとつ、ちょつと危険な実例。無限にWindowを開くのScriptです。
ここでは、新しく開くWindowを15個にしていますが、これを無限にすると、PCのリソースを使い切って
PCが落ちます。
<SCRIPT Language="JavaScript"> <!-- for (i=0;i<15;i++){ mywin=window.open("resize.htm","","top=100,left=250"); mywin.resizeTo(400-i*20,450-i*20);mywin.focus(); } // --> |