1.什麼是事件
事件分為兩部分:
element.event = ()=>{}
dom0級事件繫結
addeventlistener
dom2級事件繫結
element.addeventlistener這個屬性是定義在當前元素所屬eventtarget這個類的原型上的
事件物件及相容處理
onclick的e
原型鏈:
mouseevnet -> uievent -> event -> object
mouseevent記錄的是頁面中唯一乙個滑鼠每一次觸發時候的相關資訊,和到底是在那個元素上觸發的沒有關係
屬性值e.type: 儲存的是當前滑鼠觸發的行為型別「click」
e.clientx / e.clienty: 當前滑鼠觸發點距離當前螢幕左上角的距離
e.taget: 事件源,當前滑鼠觸發的是那個元素,那麼它儲存的就是那個元素,但是在ie6~8中不存在這個屬性(e.tager的值是undefined),我們使用e.srcelement來獲取事件源
e.clientx/clinety:
e.pagex/pagey:當前滑鼠觸發點距離body左上角(頁面第一螢幕最左上端)的x/y軸的座標,但是在ie6~8中沒有這個屬性,我們通過使用clienty+滾動條卷去的高度來獲取也可以
e.preventdefault: 組織瀏覽器的預設行為
e.currenttarget獲取的是繫結事件的元素, 雖然點選的是ul的子元素li, 但是currenttarget獲取的是ul
關於事件物件mouseevent的相容問題
事件物件本身的獲取存在相容問題:標準瀏覽器中是瀏覽器給方法傳遞的引數,我們只需要定義形參e就可以獲取到;在ie6-8中瀏覽器不會給方法傳遞引數,我們如果需要的話,需要到window.evnet中查詢
e = e || window.event;
e.target = e.target || e.srcelement;
e.pagex = e.pagex || (e.clientx + (document.documentelement.scrollleft || document.body.scrollleft))
e.pagey = e.pagey || (e.clienty + (document.documentelement.scrolltop || document.body.scrolltop))
onkeyup
keyboardevent:
e.keycode: 按下的鍵值,當前鍵盤上每乙個鍵對應的值
事件的預設傳播機制:
dom0級事件繫結:
使用dom0級事件繫結給元素的某乙個行為繫結的方法, 都是在冒泡階段執行的
addeventlistener繫結:
第乙個引數是行為型別,第二個引數是給當前的行為繫結方法,第三個引數是是否在捕獲階段傳送,false在冒泡階段發生
每個瀏覽器傳播的最頂層是不一樣的,谷歌中可以傳播到document,但是在ie中只能傳播到html事件委託/事件**
利用事件的冒泡傳播機制,觸發當前元素的某個行為,它父級所有元素的相關行為都會被觸發,如果乙個容器中有很多元素都要繫結點選事件,我們沒有必要乙個個的繫結,只需要給最外層容器繫結乙個點選事件即可,在這個方法執行的時候,通過事件源的區分來進行不同的操作。
document.body.onclick = function (e) else if ((target.id = "mark")) else
};
實現下拉輸入框
js事件 Ajax基礎
所有現代瀏覽器均支援 xmlhttprequest 物件 ie5 和 ie6 使用 activexobject 建立xmlhttprequest物件 var ajax new xmlhttprequest ie5和ie6使用activexobject物件 var ajax new activexob...
JS基礎 事件物件
onmousemove 該事件將會在滑鼠在元素中移動時被觸發 事件物件 當事件的響應函式被觸發時,瀏覽器每次都會將乙個事件物件作為實參傳遞進響應函式,在事件物件中封裝了當前事件相關的一切資訊,比如 滑鼠的座標鍵盤哪個按鍵被按下滑鼠滾輪滾動的方向。在ie8中,響應函式被觸發時,瀏覽器不會傳遞事件物件,...
js基礎 事件物件
當事件的響應函式被觸發時,瀏覽器每次都會將乙個事件物件作為實參傳遞進響應函式中。在事件物件中封裝了當前事件相關的一切資訊。比如 滑鼠的座標,鍵盤哪個按鍵被按下 滑鼠滾輪滾動的方向。事件物件.clientx可以獲取滑鼠指標的水平座標。獲取滑鼠在當前可見的視窗的座標 獲取的偏移量是相對於當前瀏覽器可見視...