1. 程式人生 > >關於事件和事件源一系列的相容問題;

關於事件和事件源一系列的相容問題;

每個元素身上的事件都是天生自帶的,只需要我們給這個事件繫結一個方法(不需要去定義它),當事件觸發時就會執行這個方法

1、時間繫結的兩種寫法

(1)div.onclick=function(){}

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

(1)與(2)這兩者的區別

onclick是這個元素的私有屬性,天生自帶的,而addEventListener()是公有屬性,從EventTarget(事件源)物件上繼承來的;IE低版本的attach是公有de。

div.onclick存在事件冒泡,不存在捕獲;

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

div.attachEvent()只有事件冒泡。

2、div.addEventListener()和div.attachEvent()的區別

(1)attachEvent()只用在IE8以下,addEventListener()適合標準瀏覽器

(2)attachEvent()的事件名帶on,addEventListener()的事件名不帶on

(3)attachEvent()函式裡面的this是undefined,addEventListener()的函式裡面的this是當前元素物件

(4)attachEvent()只有冒泡沒有捕獲,addEventListener()有冒泡也有捕獲

3、arguments

每個函式都有一個arguments物件,它是這個函式所有的引數構成的集合;在某個事件繫結的方法中,console.log(arguments)陣列中有一個元素叫MouseEvent,每個事件的方法中瀏覽器都給他一個引數叫做MouseEvent,滑鼠中的所有資訊都臨時存在這個mouseEvent物件上

4、mouseEvent的相容性

var e=e||window.event;

5、Event物件的相容性

clientX和clientY是滑鼠到網頁左上角的距離座標,但IE低版本沒有這個屬性,

IE如何計算pageY的值:clientY+scrollTop

6、獲取事件源,點選哪個元素,哪個元素就是事件源

標準:e.target

非標準:e.srcElement

7、阻止事件冒泡的相容性

標準和非標準都相容:event.cancelBubble=true

標準:event.stopPropaggation()

相容上面兩種:event.stopPropaggation?event.stopPropaggation():event.cancelBubble=true

8、阻止事件預設行為的相容性

例如:a

a.href="javascript:;"取消重新整理

標準和非標準都相容取消重新整理:event.preventDefault?event.preventDefault():event.returnValue=false