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]の値

 コピー元の値の先頭に「site:」という文字を加えている

 

 

[自動クリック]

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.