smellman's Broken Diary

クソみたいなもんです

IEのよくわからない挙動

仕事で、こんな要件があった。

あるリンクを押したらポップアップでhoge0001.htmlを表示して、同時に開いているブラウザの画面をhoge0002.htmlになるようにしてほしい。

というわけでこんなコードを書いた。

<a href="javascript:;" onClick="window.open('/popup/hoge0001.html','_blank','menubar=no,scrollbars=yes,resizable=yes,width=760,height=760'); document.location.href='/hoge0002.html';">hoge</a>

Firefox 3.0.4で動作チェックをしてテスト環境に入れてみたらお客さんからIE6だと動かないと言われたので調査してみた。
とりあえずwindow.openで処理が止まってないか調べるためにalertを入れてみる。

<a href="javascript:;" onClick="window.open('/popup/hoge0001.html','_blank','menubar=no,scrollbars=yes,re\sizable=yes,width=760,height=760'); document.location.href='/hoge0002.html'; alert('test');">hoge</a>

するとIE6SP1でalertが表示される。予想外れ。
で、30分ぐらいあーだこーだやってたら、次のコードだと動く事がわかった。

<a href="#" onClick="window.open('/popup/hoge0001.html','_blank','menubar=no,scrollbars=yes,re\sizable=yes,width=760,height=760'); document.location.href='/hoge0002.html';">hoge</a>

つまりaタグのhrefにjavascript:;と入れると挙動がかわるようだ。
ちなみにjavascript:;と入れたのは他の部分がこの記述になっていたからで特に意味はなかったりする。
とりあえず、動いてよかったけど、なんかバッドノウハウ臭いなぁ...