JS 事件基礎

2022-08-26 13:15:12 字數 1832 閱讀 7336

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可以獲取滑鼠指標的水平座標。獲取滑鼠在當前可見的視窗的座標 獲取的偏移量是相對於當前瀏覽器可見視...