あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

Firefox4で、javascriptのconfirm()実行中にリロードできてしまう件

Firefox4がリリースされたので早速使い始めていますが、早くもタイトルの様な不具合っぽいものにやられました(笑)。
会社で開発中のサービスのバグ報告にあがってきたのですが、これは……Firefoxのせいです!(`ω´;)
Mozillaへの報告は、社内にいるMozillaコミュニティなひとがしてくれるとのことです。よろしく頼みマッスル。

確認環境

不具合っぽいなにかは、Mac版のFirefoxで確認しました。他のOSのFirefox4は不明です。
(追記)Windows版でも確認しました。ただし、旧タイプのダイアログは出現しません。

再現手順

まずはこんなHTMLを用意します。
test1.html

<!DOCTYPE html><html><head><title>test1</title></head>
<body>
<form action="test2.html">
<input type="submit" onclick="return confirm('本当に実行してイイですか?');">
</form>
</body></html>

test2.html

<!DOCTYPE html><html><head><title>test1</title></head>
<body><h1>実行しますた!!</h1></body></html>

test1.htmlを開いて、ボタンをクリックします。confirm()が実行されて、下の画像のようなかっこいいデザインのダイアログが出ます。ここで、リロードボタンをクリック(もしくはF5 or Command+Rキーを押)します。

すると、OKを押した時と同じ扱いとなってtest2.htmlに飛ばされてしまいました。なんてこったい。

さらに、落ち着いて前のページに戻り、もう一度ボタンをクリックすると、今度は旧タイプのダイアログでconfirm()が実行されました。

感想


独自ダイアログを実装するのは別に構わない(むしろJava Scriptアプリケーションみたいな文字列が出なくなるのはありがたい)のですが、このへの挙動には気を付けて欲しかったナァと思う次第です。

ちなみに

aタグにonclick属性を付けて同じようにconfirm()を実行した場合は、リンク先に飛ぶことはないです。