- PR -

VBScriptで子ウィンドウを閉じるときにエラーが出てしまう

投稿者投稿内容
すー
会議室デビュー日: 2006/07/13
投稿数: 11
投稿日時: 2006-07-21 16:36
いつもお世話になっております。
現在webページの作成で、親ウィンドウを閉じたら子ウィンドウを閉じるというのを実装しております。

<script language="vbscript">
<!--
Dim hdl

hdl=window.open("http://yahoo.co.jp","hdl")

function window_onbeforeunload()
hdl.window.close()
end function
//-->
</script>

親ウィンドウからwindow.openで開き、そのオブジェクトでwindow.close()で親ウィンドウが閉じたときに同時に子ウィンドウも閉じるようにしております。
しかし、子ウィンドウを開き親ウィンドウを閉じようとすると、「Microsoft VBScript 実行時エラー: オブジェクトがありません。: 'hdl'」というエラーが出てしまいます。

どうかご教授の方よろしくお願い致します。

[ メッセージ編集済み 編集者: すー 編集日時 2006-07-21 17:01 ]
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-07-21 16:57
functionがVBScriptじゃなくてJavaScriptのようですが。。。
すー
会議室デビュー日: 2006/07/13
投稿数: 11
投稿日時: 2006-07-21 16:59
引用:

burton999さんの書き込み (2006-07-21 16:57) より:
functionがVBScriptじゃなくてJavaScriptのようですが。。。



すみません、投稿の方書き間違えていましたので編集いたしました。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-07-21 17:00
ちなみにオブジェクトの代入はたしかSETを使うはずです。

<!--
Dim hdl

Set hdl=window.open("http://yahoo.co.jp","hdl")

function window_onbeforeunload()
hdl.close()
end function
//-->
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-07-21 17:02
引用:

<script language="vbscript">
<!--
Dim hdl

hdl=window.open("http://yahoo.co.jp","hdl")

function window_onbeforeunload()
hdl.window.close()
endif
//-->
</script>



endif じゃなくてend functionですね!(落ち着いて)

#と思ったらなおってるw

[ メッセージ編集済み 編集者: burton999 編集日時 2006-07-21 17:03 ]
すー
会議室デビュー日: 2006/07/13
投稿数: 11
投稿日時: 2006-07-21 18:47
>burton999さん
ありがとうございます、先ほどのエラーは解決いたしました。
しかし、全ての子ウィンドウを閉じようと思い、下記のようなプログラムにしたところまた別のエラーが発生してしまいました。

<script language="vbscript">
<!--
Dim hdl(4)
Dim i

sub button1_onclick()
hdl(0)=window.open("URL0","hdl0")
endsub

sub button2_onclick()
hdl(1)=window.open("URL1","hdl1")
endsub

sub button3_onclick()
hdl(2)=window.open("URL2","hdl2")
endsub

sub button4_onclick()
hdl(3)=window.open("URL3","hdl3")
endsub

sub button5_onclick()
hdl(4)=window.open("URL4","hdl4")
endsub

function window_onbeforeunload()
 for i=0 to 4
  if hdl(i) <> "" then
   hdl(i).window.close()
  end if
next
end function
//-->
</script>

各ボタンを押すとwindow.openでウィンドウを開き、オブジェクトを配列hdlに入れています。window.openのURLによってif文で比較するときに「Microsoft VBScript 実行時エラー: 型が一致しません。」と出るものと出ないものがあり、非常に困っています。URLは相対パスを入れていますが、何が問題なのでしょうか?
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-07-21 19:22
オブジェクトを文字列と比較しているからでは。
すー
会議室デビュー日: 2006/07/13
投稿数: 11
投稿日時: 2006-07-21 19:29
引用:

mioさんの書き込み (2006-07-21 19:22) より:
オブジェクトを文字列と比較しているからでは。


確かにそう思いましたが、これで比較ができエラーが出ない場合もあったので混乱しています。

スキルアップ/キャリアアップ(JOB@IT)