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()を実行した場合は、リンク先に飛ぶことはないです。