2011-05-12 3 views
3

私は次の操作を行う必要があり、ログインフォームがあります。オートフィルでフォーム要素が入力されたかどうかを検出するにはどうすればよいですか?

  • 入力せずにログインしたいユーザーはそう
  • を行うようにするとき、ユーザーオートフィルをフォーム上で使用されたかどうかを検出し続けることができるようにオートフィルを許可します後で自動記入なしでログインする必要があるサイトの部分にアクセスしようとすると、最初の書式で自動記入を使用した場合にのみ、再度ログインするように促します(代わりに自動記入を許可しない別のバージョンのログインフォーム)

現在、私は、自動入力が私たちであるかどうかを確実に検出する方法を見つけていませんフォームフィールドがユーザーの入力なしで入力されるメカニズムは、ここでは「オートフィル」とみなされます。)(IE、Firefox、Chrome、Googleツールバーなど)だから、私は単に自動入力なしでユーザーにログインさせるだけです(それはビジネス上の重要な要件です)、サイトの重要な部分にアクセスしたときに自動入力禁止フォームからログインするように促しています実際には最初の形式でユーザー名とパスワードが入力されています。

信頼できる方法が見つかった場合(すべての形式の自動入力)を検出すると、私はそれについて聞いてみたいと思います。

ありがとうございます!

+0

p.s. 1つのアプローチの大まかなアイデアは、入力フィールドのいずれかにキーストロークが発生するたびにログを記録することです(ユーザーが手動で入力した情報の量を測定し、ユーザーが削除またはバックスペースをクリックしたときの特殊なケースを確実に処理します)送信時に入力フィールドにいくつの文字が表示されているかを確認します。番号が異なる場合は、自動入力が使用されたことを示すように見えます。しかし、これはちょうど試練されたアイデアであり、IE6 +、FF3 +、Chrome、Safariなど、これがうまくいくかどうかは分かりません。すべての入力に空のデフォルト値があると仮定します。 – Benissimo

+1

タイミングキー入力+キーストローク数(バックスペース、削除などを考慮した後)を確認することは、不完全な方法です。しかしそれはまだ愚かな証拠でも完璧でもないでしょう。自動入力データと貼り付けデータ(クリップボードから)を区別することはできません。 – techfoobar

答えて

0

私はそれは嫌いだが、もっと重要なことに、あなた(開発者)はそれもできないと期待している。

今日のブラウザに組み込まれている自動塗り潰しは、昨年の古い自動塗りつぶしのアプリケーションだと想像してください。彼らはブラウザーのDOMの影響範囲外に座って、知られているプロパティ、すなわちユーザーが入力したかのようにフォームと送信されたキーストロークの既知のウィンドウを文字通りポーリングしました。

現在のブラウザには自動塗りつぶしオプションが組み込まれていますが、それでも古いアプリケーションと同じように標準ではなく、(信頼性高く)検出できません。

JavaScriptを使用して入力フィールドを無視するか、入力フィールドを常に空白にします。