2022年5月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
無料ブログはココログ

« window.open()やwindow.close()は非同期です。 | トップページ | 名前でもってwindowオブジェクトを捕捉する。 »

2009年8月25日 (火)

同じ名前のウィンドウを(もしあれば)閉じて、常に新しく開く。

例えば、

set win=open("about:blank","hoge","resizable=no")
win.close
set win=open("about:blank","hoge","resizable=no")

は、うまく行きません。

closeが非同期なので、遅延して、時間軸上で、

set win=open("about:blank","hoge","resizable=no")
set win=open("about:blank","hoge","resizable=no")
win.close

のように動いて失敗します。

set win=open("about:blank","hoge","resizable=no")
win.close
do while not win.closed
' wscript.sleep 100 ' WSHならsleepがありますが、HTMLにはないので。
loop
set win=open("about:blank","hoge","resizable=no")

のように待ち合わせれば回避できますが、スピンループなので避けましょう。

set win=open("about:blank","hoge","resizable=no")
win.name=""
win.close
set win=open("about:blank","hoge","resizable=no")

あるいは、さらに、

set win=open("about:blank","hoge","resizable=no")
win.name=""
win.close
set win=open("about:blank","_blank","resizable=no")
win.name="hoge"

とすれば、非同期に耐えられます。

« window.open()やwindow.close()は非同期です。 | トップページ | 名前でもってwindowオブジェクトを捕捉する。 »