autofillによる入力値であるかの判定

autofillによる入力値であるかの判定:

フォームの入力値がブラウザのautofill機能によるものかは、フォームが:-webkit-autofillセレクタを持っているかで判定できる。

Firefoxの場合は:-webkit-autofillセレクタを取得できないが、autofill時に発生するinputイベントにdetailプロパティ(マウスイベント、キーイベントの場合のみ含まれている)が存在するかで判定できる。

function hasAutofill(input, detail) { 
  var isAutofilled = false; 
 
  try { 
    isAutofilled = Boolean(input.parentNode.querySelector(':-webkit-autofill')); 
  } catch (e) { 
    // firefoxはautofillセレクタが取得できないので、detailプロパティ(マウスイベント、キーイベントの場合のみ含まれている)が存在するかで判定する 
    isAutofilled = Boolean(detail === 'undefined'); 
  } 
 
  return isAutofilled; 
} 
 
function onInput(e) { 
  var detail = typeof e.detail; 
  console.log(hasAutofill(e.target, detail)); 
} 

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)