JavaScript | ![]() |
|
サブウィンドウのオープンと操作 |
1. 内容 |
1]サブウィンドウをオープンする。
2]親ウインドウからサブウィンドウに値を書き込む。
3]親ウインドウからサブウィンドウのボタンを自動クリックする。
2.目的 |
「infoseek」を使って『UP−BEAT』内の検索を行う。
3. ソース |
<SCRIPT Language="JavaScript"> <!-- var subwin1; var subwin2; function statmsg(){ subwin1=window.open('info_site_2.htm','info_site_2','toolbar=no,status=no,menubar=no,scrollbars=yes,width=550,height=500'); setTimeout("subwin1.document.forms[0].elements[5].value='site:'+document.forms[0].elements[0].value",1000); setTimeout("subwin1.document.forms[0].elements[6].value=document.forms[1].elements[0].value",1000); setTimeout("subwin1.document.forms[0].sitesearch.click()",3000); setTimeout("subwin1.focus()",4000); } function win_small(){ if (!window.opener){ subwin2=window.open('info_site_1.htm','info_site_1_2','toolbar=no,status=no,menubar=no,scrollbars=yes,width=650,height=150'); window.close(); } } // --> </SCRIPT> |
3. 解説 (1) |
[ウィンドウのオープン]
subwin1=window.open('info_site_2.htm','info_site_2','toolbar =no,status =no,menubar =no,scrollbars =yes,width =550,height= 500'); |
window.open | ウィンドウをオープンする |
subwin1 | ウインドウ識別変数 |
info_site_2.htmtm | URL |
info_site_2 | ウィンドウの名前 |
toolbar = no | ツールバー無 |
status = no | ステイタスバー無 |
menubar = no | メニューバー無 |
scrollbars = yes | スクロールバー有無 |
width = 550 | 横幅 |
height = 500 | 縦幅 |
[一定時間後に実行するタイマー]
setTimeout("関数()",時間); |
setTimeout | ○○秒後,関数(命令)を実行 |
関数()tm | タイマー割り込みで実行される命令または関数名 |
時間 | タイマー時間(秒) |
[フォーム間データーのコピー]
subwin1.document.forms[0].elements[5].value='site:'+document.forms[0].elements[0].value |
受け取り側tm | 子ウィンドウ | フォーム[0]のエレメント[5」の値 |
コピー元 | 親ウィンドウ | 'site:' + フォーム[0]のエレメント[0]の値 |
[自動クリック]
subwin1.document.forms[0].sitesearch.click() |
click() | フォームのボタンを自動クリックする |
[ウィンドウを前面に]
subwin1.focus() |
focus() | ウィンドウを前面に移動する |
●問題点 − なぜ,タイマーを使うか
新しく,開いた子ウィンドウを親ウィンドウから操作する場合,ウィンドウが完全に開いてない時に操作するとエラーになる。完全ロードし終わってから,操作するためタイマーを使用。ただし,ロード時間はPC自体の性能に依存するため,PCごとに調整することが必要となる。そのため,子ウィンドウが完全に開いたことをチェックする他の方法を考えるべきだが....。 |
[親ウィンドウのチエック]
if (!window.opener) |
window.opener |
親ウインドウがなかったら実行する? その時,子ウィンドウを開き,親ウインドウを閉じるつもりだが・・・・。 |
とにかく,親ウィンドウ,子ウィンドウの確認,また親から子,子から親のページ完全ロードの確認方法をなんとかしなければいけない! いろいろありそうだが,うまくいかないのはなぜだろう? |
Copyright (C) 2000 UP-BEAT. All Rights Reserved.