找出 Chrome 開發人員工具的表單問題

Chrome 開發人員工具團隊正在開發其他新功能,協助您找出表單問題並對自動填入功能進行偵錯。

我們在 Chrome Canary 中測試 DevTools 的新功能,目的是協助開發人員瞭解表單自動填入功能的運作方式,以及為何有時會失敗:

  • 瀏覽器自動填入功能如何將儲存的值對應至表單欄位?
  • 自動填入功能會根據哪些條件填入表單欄位?
  • 哪些欄位沒有透過自動填入功能填入?
  • 為什麼系統未使用自動填入功能填入表單欄位?

本文將概略說明 Chrome 開發人員工具中的新功能,並說明如何測試這些功能及提供意見回饋。

什麼是自動填入功能?

Chrome 會安全地儲存資料組,並提供填寫表單欄位的功能,讓使用者不必輸入文字,就能管理地址、付款和登入資訊。這就是所謂的「自動填入」功能。

提交表單時,Chrome 會提供儲存自動填入資料的選項。使用行動裝置:

三張 Android 螢幕截圖:Chrome 中的地址表單、Chrome 自動填入功能提供的儲存地址選項,以及顯示用於編輯新自動填入項目的對話方塊。

接著,Chrome 會使用已儲存的資料自動填寫表單。

使用行動裝置:

使用電腦:

Chrome 在電腦上提供自動填入地址表單的功能

你可以在 Chrome 設定中管理自動填入資料。

使用行動裝置:

Android 裝置上的 Chrome 設定:編輯地址

使用電腦:

chrome://settings/addresses 頁面,顯示兩個範例地址

你也可能會發現,Chrome 會針對與地址、信用卡或登入資料無關的輸入欄位提供建議。除了為集合結構化資料 (例如地址和付款詳細資料) 提供自動填入功能,Chrome 還可協助使用者避免重新輸入單一表單欄位資料,因為這些欄位無法由自動填入功能處理。如果表單中有 Chrome 曾經遇到過的名稱屬性欄位,Chrome 就會建議值,讓您不必重新輸入資料。

以下提供一個簡單的範例:

Chrome 針對單一表單欄位中的非結構化資料提供建議

Chrome 開發人員工具顯示,此處的表單欄位沒有對瀏覽器有意義的屬性。而是 n300name 屬性。

Chrome 開發人員工具會顯示表單中的非結構化資料資訊,如上一個範例所示:單一輸入內容僅包含 type=text 和 name=n300 屬性。

這個欄位不對應於一組結構化資料中的值,因此不符合 Chrome 自動填入功能的使用方式,但如果 Chrome 日後遇到這個名稱的欄位,仍可協助使用者。

測試新的 Chrome 開發人員工具自動填入功能

Chrome 正在測試開發人員工具「Issues」面板的新功能,以便偵錯自動填入功能的異常情形。

你可以在 Chrome Canary 中試用這些新功能。勾選 。「設定」>「實驗」> 核取方塊。 在「開發人員工具」中,醒目顯示「元素」面板 DOM 樹狀結構中的違規節點或屬性,並在系統提示時重新載入「開發人員工具」。

Chrome 開發人員工具設定頁面,顯示「Highlights a violating node ...」(醒目顯示違規節點 ...)

或者,您也可以使用 AutofillEnableDevtoolsIssues 標記,從指令列執行 Chrome Canary:

  • Windows: shell start chrome --restart --flag-switches-begin --enable-features=AutofillEnableDevtoolsIssues
  • Mac: shell open -a "Google Chrome Canary" --args --restart --flag-switches-begin --enable-features=AutofillEnableDevtoolsIssues

如要檢查問題,請在含有表單的網頁上開啟開發人員工具的「Issues」面板。form-problems.glitch.me 是個不錯的起點。

Chrome 開發人員工具顯示表單元素的 for 屬性有問題。

如您所見,這個表單很混亂!包括:

  • 輸入欄位未含 idname 屬性。
  • 含有重複 ID 的元素。
  • <label>for 屬性與元素 ID 不符。
  • 含有空白 autocomplete 屬性的欄位。

將滑鼠游標懸停在 DOM 樹狀圖中醒目顯示的元素上,然後按一下「View issue」,即可瞭解詳情。

Chrome 開發人員工具中的擴充問題:不正確使用屬性標籤。

按一下「違規節點」,即可查看每個問題的受影響資源。這個表單有八個標籤,其中 for 屬性與表單欄位的 id 不相符。

使用開發人員工具改善表單無障礙

開發人員工具也可以突顯自動填入功能的無障礙性問題,例如表單欄位沒有 aria-labelledby 屬性或相關聯的 <label>

Chrome 開發人員工具無障礙面板,顯示表單中輸入元素的標籤。

在這個範例中,<input> 元素有相符的標籤。這表示輔助裝置可以宣告元素的用途。不過,在下列範例中,系統找不到相符的標籤或 aria-labelledby 屬性。

Chrome 開發人員工具無障礙面板,顯示表單中輸入元素沒有相符的標籤或 aria-labelledby 屬性。

針對開發人員工具中的新自動填入功能提供意見

請使用下列選項,討論文章中的新功能和變更,或任何與開發人員工具相關的內容:

  • 透過 crbug.com 上的總體錯誤,向我們提交建議或意見回饋。
  • 透過開發人員工具回報問題:依序點選「更多選項」 >「說明」 >「回報開發人員工具問題」
  • 在 Twitter 上傳送訊息給 @ChromeDevTools

瞭解詳情

  • 學習表單:HTML 表單課程,可協助您提升網頁開發人員專業知識。適合剛開始使用表單和自動填入功能的使用者。
  • web.dev/tags/forms:提供付款、登入和地址表單的相關指南、最佳做法和程式碼研究室。