ログインフォームのデータを保存し、次回のアクセス時に自動入力することを決定する Chrome のヒューリスティックは何ですか?
Chrome が特定のフォームの資格情報を保存しない場合、その理由は何でしょうか? わかっていることは次のとおりです。
- ユーザー名とパスワードのフィールド持つ必要があります
autocomplete="on"
; - フォーム持つ必要があります
method="POST"
。
実験的には、これだけでは不十分です。両方の基準を満たし、資格情報が自動入力されないログイン ページ (非公開で申し訳ありませんが、コードの要点は以下にあります) があります。
これが私の具体的な問題です。私は別の方法で解決しました(インストールすることで)自動入力フォームに資格情報を入力するようにしていますが、Chrome が資格情報を保存することを提案しない理由を知りたいです。
ある Web サイト (私が作成したものではなく、公開されていないもの) では、ユーザー名とパスワードが必要です。この Web サイトでは、(知識のない私の目には) かなり標準的なフォームが使用され、次のようになります (ネストされたもの<div>
やその他多くのものは省略し、ここで示されている属性と関数はfooXXX
私が名前を変更したものです)。
<form name="aspnetForm" method="post" action="default.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="aspnetForm">
<table>
<tr>
<td>Username:</td>
<td><input name="foo$name" type="text" id="foo_name" tabindex="1" autocomplete="off" onkeyup="fooFunction()" style="width:175px;" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input name="foo@pass" type="password" id="foo_pass" tabindex="2" value="" autocomplete="off" style="width:175px;" /></td>
</tr>
</table>
</form>
このサイトの認証情報をブラウザに記憶させたいのですが、ブラウザではこの機能が有効になっていますが、このサイトには何か特殊な点があり、Firefox と Chrome の両方で名前とパスワードを記憶する機能が提供されません。
autocomplete="off"
次のように変更するユーザースクリプト (Firefox では Greasemonkey スクリプト、Chrome では解凍された拡張機能) を作成しましたautocomplete="on"
:
document.querySelector("#foo_user").setAttribute("autocomplete", "on");
document.querySelector("#foo_pass").setAttribute("autocomplete", "on");
Firefox では、これは望ましい効果をもたらします。Firefox はパスワードを記憶するように提案し、次回ログイン ページにアクセスしたときに資格情報が自動入力されます。
Chrome (27.0.1453.93、Linux) ではそのような幸運はありませんでした。パスワードを記憶するように求めるプロンプトは表示されず、ユーザー名フィールドの履歴も表示されません。要素を検査してスクリプトが実行されていることを確認しましたがinput
、表示されますautocomplete="on"
。
これらの行をユーザースクリプトに追加してみましたが、状況は改善されませんでした。
document.querySelector("#foo_user").removeAttribute("onkeyup");
document.querySelector("#foo_pass").removeAttribute("value");
Chrome のヒューリスティックは Firefox とどう違うのでしょうか。また、どうすれば資格情報を記憶させることができるのでしょうか。
答え1
使用オートコンプリート=オン拡大。
Web ページで 'autocomplete=off' を 'autocomplete=on' に変更し、パスワードが記憶されるようになります。
答え2
新しいフラグを探しているときに、オートコンプリートの問題を解決してくれそうなフラグを見つけました。chrome://flags に、「ログイン検出を有効にする」というフラグがあります。これを「無効」にすると、(少なくとも実験が削除されるまでは)問題が解決するはずです。(iOS 版 Chrome ではこのフラグは存在しません。つまり、そのプラットフォームでは行き詰まっています!)そして、答えは何Google は、履歴を表示できるオムニボックスのようなインテントを使用していると思いますが、よくわかりません。よろしくお願いいたします。Mac