ユーザーは入力フィールドに貼り付けることができません

一部のウェブサイトでは、ユーザーがパスワードを貼り付けられるとセキュリティが低下すると主張しています。 パスワードを貼り付けるとセキュリティが向上します パスワード マネージャーを使用できるためです。

通常、パスワード マネージャーはユーザーに強力なパスワードを生成して安全に保存し、ユーザーがログインする必要があるたびにパスワード フィールドに自動的に貼り付けます。この方法は一般に 短いパスワードの入力をユーザーに強制するよりも安全である 覚えておいてください。

通常、ユーザーが <input> 要素に貼り付けできないようにすべきではありません。

Lighthouse の監査で不合格となった結果

Lighthouse は、ユーザーが読み取り専用以外の入力フィールドに貼り付けられないようにするコードを報告します。

Lighthouse 監査で、ページがユーザーによるパスワード欄への貼り付けをブロックしていることが示される

Lighthouse では、読み取り専用以外の <input> 要素がすべて収集されます。 各要素にテキストを貼り付け、 次に、paste イベントがカスタム イベント ハンドラによってブロックされていないことを確認します。

paste イベント リスナーの外に貼り付けないようにすることもできます。 Lighthouse ではそのようなシナリオは検出されません。

パスワード欄への貼り付けを有効にする方法

貼り付けの妨げになっているコードを見つける

貼り付けを妨げているコードをすばやく見つけ、検査するには:

  1. [イベント リスナー ブレークポイント] ペインを展開します。
  2. [クリップボード] リストを開きます。
  3. [paste] チェックボックスをオンにします。
  4. ページのパスワード欄にテキストを貼り付けます。
  5. DevTools はコードの最初の行で一時停止します。 関連する paste イベント リスナー。

貼り付けを妨げているコードを削除する

多くの場合、問題の原因は preventDefault() への呼び出しです。 paste イベント リスナー内 パスワード入力要素と関連付けられています。

let input = document.querySelector('input');

input.addEventListener('paste', (e) => {
  e.preventDefault(); // This is what prevents pasting.
});

貼り付けイベントをリッスンしてプリエンプトする場合は、 イベント リスナー全体を削除します。

リソース

ユーザーは入力フィールドに貼り付けることができませんの監査のソースコード