DOM事件 中的 focus 和blur
阿新 • • 發佈:2019-02-19
今天做一個表單驗證時 ,遇到一個問題,利用form.addEventListener 繫結事件時,發現focus 不起作用 通過查閱資料 終於知道了問題出在哪裡?
(資料出處https://developer.mozilla.org/en-US/docs/Web/Events/ 和 https://segmentfault.com/a/1190000003942014)
1.不是所有事件都支援冒泡和捕獲,這樣的話就不能進行事件代理了。
2.不是所有標籤都能獲得獲得焦點 和失去焦點。
整理如下:
1.focus blur 不支援冒泡 支援捕獲 focusin focusout 支援捕獲。
2. 下面這些都是可以獲得焦點的
a. window:當頁面視窗從隱藏變成前置可見時,focus 事件就會觸發
b. 表單元素(form controllers):input/option/textarea/button
c.連結元素(links):a標籤、area標籤(必須要帶 href 屬性,包括 href 屬性為空)
d.
設定了 tabindex 屬性(tabindex 值非-1)的元素
e.設定了contenteditable = "true"屬性的元素。
3 要想讓這些不能獲得焦點的標籤元素如 div 獲得焦點 ,可使用 2.e 2.d