Vimとボクと、ときどき、PHP

Vim好きなエンジニア(主にPHP開発)が不定期に技術情報やネタを書いていくブログです

Home » 大事なことだから二度押さない

大事なことだから二度押さない

珍しく連日の投稿です。

社内のシステムで、「登録」などのボタンを連続で押される、いわゆる二度押しが頻発していて困っています。
二度押しをする方に理由を聞いたわけではありませんが、おそらく理由は下記のようなことではないでしょうか。

  • 「登録」とかのボタンを押してから画面が変わるまで時間がかかり、不安になってもう一度押す
  • 思わずボタンをダブルクリックしてしまった
  • シングルクリックしたはずなのに、マウスの調子が悪くて勝手にダブルクリックになった(参考

分かります。私もついやりたくなることがあります。でも開発者の立場になりますと、二度押しって非常に困るのです。
そこで、二度押しを防止するための細工を入れることになりました。JavaScriptでやったり、トークンを発行しておいてサーバ側で制御したりと、ちょっと検索すれば技術系の記事や知恵袋の質問などが、星の数ほどヒットします。そのくらいメジャーな問題であり、開発者を悩ませているのです。

さて、方法は書きませんが、今回私が行った細工はサーバ側で処理するものでした。サクっと実装を終え、各種ブラウザで動作確認を行っていきます。

  • まずIE・・・うん、OK。
  • 次にChrome・・・よし、いいね。
  • 最後にFirefox・・・・・・・・・・・・あれ?

困ったことに、Firefoxだけ意図した挙動になりません。しかも「Firefoxで二度押しを防止できていない」ではないのです。見た感じ、「Firefoxで二度押しができてない」でした。何度、ボタンをダブルクリックしても、Firefoxだけ二度押しが発生したことを示す画面になってくれないのです。

いろいろと調査してみたところ、Firefoxでボタンを2回押しても、どうやらリクエストは1回しか飛んでいないようでした。つまり「Firefoxには機能として多重送信防止が組み込まれている?」という結論に達しました。ただ、確信は持てていません。Firefoxが何を基準に多重送信を判定しているかも分かっておりません。
ちなみに、軽くググってみたところ、2007年に既にこの疑問を抱いている方の記事が見つかりました(ここ)。

これが正しいのかどうかは別として、なぜ他のブラウザがこの機能を搭載しないのかが疑問です。色々なところで開発者の悲鳴が聞かれることにも関わらず。
JavaScriptの実行速度を上げたりするのに尽力するのも大事でしょうが、二度押しを防止する機能って結構大事だと思うんです。

いっそ全てのOSのデフォルトブラウザをFirefoxにしてほしい。そんなことを思ってしまった今日この頃です。(でも私はChromeを愛しています)

Name of author

Name: よーすけ

Short Bio:

主にPHP開発をやってる社内PGです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です