1. 程式人生 > >DOM事件 中的 focus 和blur

DOM事件 中的 focus 和blur

今天做一個表單驗證時 ,遇到一個問題,利用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