Internet Explorer なんか使わなきゃいいのに

今日、お客さんにテストしてもらってた CGI で、お客さんから何度も「DB 登録時にシステムエラーが出る」と連絡が来た。
しかし、うちでは何度やっても再現出来ないので、「何か変な使い方してるんじゃねえだろうなあ?」とお客さんを疑い始めたところでハッと気づいた。

Internet Explorer でのみ発生する「Form の二重送信じゃねえの?」と。

で、ソースを見てみたら案の定だ。

今回は、(他人が作った)既存の CGI を改修して新しいサービス用のシステムを作ってるわけで、まあ、特に問題なければ元のソースの内容をなるべく残してるんだけど、Form の Submit のところで、

<input type="submit" name="ADD" value="更 新" onClick="javascrpt:Submit('ADD')">

なんてやってる。
で、JavaScript の方で、

function Submit(ps) {
    document.form.action.value = ps;
    document.form.submit();
}

みたいにして、action という Form 項目に 'ADD' という文字をセットしてから送信処理を行なっているようだ。
これじゃあ、まず type="submit" のボタンを押すことで送信が行われ、更にその時に実行される JavaScript 側でも送信が行われる。つまり二重送信だ。
結果、DB に登録する時に duplicate error が発生してるんだな。

なんでこんなことしてるんやろ?俺が作ったプログラムじゃないから全然わからんわ(^^;

取り敢えず、

<input type="hidden" name="action" value="ADD">
<input type="submit" name="ADD" value="更 新">

にしてみたのだが(元々、<input type="hidden" name="action" value="ADD"> は書かれていた)、これで問題なく動いているようである。今のところ、エラーは発生していない。

ちなみに、こういう現象が発生するのは Internet Explorer だけである。
Form 送信は HTTP のプロトコル的にも(リクエストと一緒だからな)一度だけ行われるもので、他のブラウザ(Firefox や Chrome、Safari など)は二重送信が行われないように、二度目の送信処理は裏でキャンセルするようになっている。
だから、Firefox と Chrome でテストやってた俺んとこじゃ再現出来なかったんだな(^^;

重ねて言うが、二重送信しちゃうのは Internet Explorer だけなのである。

で、ここで、Microsoft 信者は「IE が悪いんじゃない!そういう HTML の書き方がまずいんじゃないか!!」とか言うだろうけど、「Form の二重送信なんかあり得ないんだから、素直に駄目にしておけばいいだけ」なんだよ。
Microsoft には HTTP プロトコルに詳しいヤツがいないんじゃねえかって思うよ、実際。

今日、東京ポッド許可局の10/22のポッドキャスティングを聞いていたら「東京ポッド許可局のサイトは、Internet Explorer については動作保証外にします。Firefox や Safari で見てください」って言うてて笑った。
そう。実はとっくの昔に「Internet Explorer じゃなくたって良い」世の中になってたのである。
つーか、やっぱ、Internet Explorer だけ、変な独自仕様を詰め込んじゃって、インターネット界では特殊な存在になってしまってるんだよね。

まったく、Internet Explorer のおかげで、どれだけ無駄な時間を過ごしたことか・・・

今時 Internet Explorer に固執するのは、変化を望まないXX企業と、「このパソコンにインターネットはついてますか?」的発言をする馬鹿ユーザーくらいしかいねえよ。

さあ、皆、Internet Explorer を捨てて、素敵な未来へ!(笑)

トラックバック(0)

このブログ記事を参照しているブログ一覧: Internet Explorer なんか使わなきゃいいのに

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/1853

コメントする

このブログ記事について

このページは、shinodaが2011年11月18日 23:58に書いたブログ記事です。

ひとつ前のブログ記事は「寿楽亭で「チャーシューは脂のとこ?脂がないとこ?」と聞かれた」です。

次のブログ記事は「辛5にしたら、一花の汁なし担々麺もそこそこの味に」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら