1. 程式人生 > >Web--js高級--12月3日隨筆

Web--js高級--12月3日隨筆

element 坐標 nts true event event對象 || 直接 標準

事件對象

1.每個元素身上的事件是天生自帶的,不需要我們去定義,只需要我們給這個事件綁定一個方法,當事件觸發時就會執行這個方法。

2.事件綁定的方法:

  1.div.onclick=function(){} DOM0級事件

  2.div.addEventListener()或div.attachEvent()

DOM2級事件綁定

  二者的區別

  onclick是這個元素私有的屬性,天生自帶的,而addEventListener()是公有的屬性,從EventTarget(事件源)對象上繼承來的。

  IE低版本的attachEvent是共有的。

  div.onclick存在事件冒泡機制沒有捕獲機制

  div.addEventListener()可有冒泡也可有捕獲

  div.attachEvent()只有冒泡機制

3.div.addEventListener和div.attachEvent的區別

(1)前者有冒泡和捕獲,後者只有冒泡機制

(2)事件名前者帶on,後者不帶on

  (3)前者this指向當前元素,後者指向window

  (4)前者是標準瀏覽器的寫法,後者是ie8以下

4.Arguements(參數集合)

每個函數都有一個arguments對象,他是這個函數所有參數構造的集合

技術分享圖片

技術分享圖片

上面的控制臺是arguments數組中有一個元素叫mouseevent。所以,每個事件的方法中瀏覽器都給他一個參數叫mouseevent。

我們所有鼠標的信息都臨時存儲在這個mouseevent對象上

Mouseevent有兼容性

  標準瀏覽器可以直接讀取,但是ie不行

  解決辦法:

  div.onclick=function(ev){

   var ev=ev||window.event 

}

5.event對象的兼容性

  clientX和clientY是鼠標到瀏覽器窗口左上角的距離坐標

  pageX和pageY是鼠標到網頁左上角的距離坐標,但是ie低版本沒有這個屬性。

   在ie下怎麽算pageY的值用clientY+scrollTop

事件源 點擊哪個元素,哪個元素就是事件源

  標準瀏覽器的事件源是ev.target

  IE6-8沒有這個屬性,但是ie有ev.srcElement

6.阻止事件冒泡兼容性

  1.event.cancelBubble=true

  2.event.stopPropagation?event.stopPropgation():event.cancelBubble=true

7.阻止事件默認行為兼容性

  比如a的href

  href為空 會自動刷新頁面

  href為# 錨點鏈接

  href為javascript:;阻止默認行為的發生

  Event.preventDffault?Event.preventDefault():event.returnValue=false

Web--js高級--12月3日隨筆