web-dev-qa-db-ja.com

これはChrome 81のオートフィルバグですか?

Ubuntu 18.04およびChrome= 78を実行している私のメインコンピューターでは、このフォームは期待どおりに機能します。各フォームは個別に入力できます。

form {
  border: solid 1px black; 
  padding: 1em; 
  display: inline-block; 
}

form input {
   display: block; 
}
<form>
  <label> name<input type = "text" name ="name" />   </label>
  <label> phone<input type = "text" name ="phone" /> </label>
  <label> email<input type = "text" name ="email" /> </label>
  <button type="submit"> submit</button>
</form>

<form>
  <label> name <input type = "text" name ="name"/> </label>
  <label> phone<input type = "text" name ="phone" /> </label>
  <label> email <input type = "text" name ="email"/> </label>
  <button type="submit"> submit</button>
</form>

CodePen

ただし、Chrome 81)-2番目のフォームで自動入力を選択すると、最初のフォームも入力されます。

これはバグですか、それとも自動入力の動作が正しいですか?

もしそうなら、これが文書化されているバグトラッカーはありますか?

3
user1068446

HTMLフォームの名前付きフィールドは、ユーザーのプロファイルのブラウザによって値とともに保存されるため、自動入力のメカニズムを介して他のフォームで再利用できます。同じ名前のフィールドは、このWebサイトと、同じ名前のフィールドを持つ他のすべてのWebサイトでグローバルに使用されます。

フォームの自動入力 のChromium記事では、これは、これらの値をペアとして格納するSQLiteデータベーステーブルの構造から確認できます。テーブルの列はpair_idです、名前、値、カウント。ここでは、元のWebサイトと元のページのURLはここに表示されておらず、重要性がないことがわかります。

フォームフィールドの標準名を使用しました。これは、name、phone、emailなどのさまざまな標準で見つかります。一部のブラウザでは、プロファイル定義に値を入力することもできます。ブラウザは、これらの標準のフィールド名を使用して、すべてのフォームに自動入力します。ブラウザは、既知の名前を持つフィールドだけでなく、すべてのフィールド値を保存します。

同じ名前を2回使用しました。ブラウザはあなたのプロファイルに保存し、再利用します。自動入力時には、内部アルゴリズムに基づいて、同じ名前のフィールドに入力した値の1つだけが使用されます(最後に入力したものや最もよく使用されるものなど)。実際には、フィールドの両方の形式の値を同一にすることを宣言しました。これは、ブラウザーが要求どおりに同じ値でフィールドに自動入力することにより行いました。

使用したフィールド名には、他にもよく知られているバリエーションがあります。たとえば、使用したnameの他に、fnamemnameおよびlname(姓、名、姓)。

HTML5では form standard が拡張され、たとえば、勤務先の電話番号と自宅の電話番号を区別できるautocompleteタグ属性が追加されました。例えば:

<p><label>Customer name: <input name="custname" required autocomplete="shipping name"></label></p>
<p><label>Telephone: <input type=tel name="custtel" autocomplete="shipping tel"></label></p>
<p><label>E-mail address: <input type=email name="custemail" autocomplete="shipping email"></label></p>

役立つリファレンス:

2
harrymc