JS-----DOM事件

文檔或瀏覽器窗口 發生的一些特定的交互瞬間 能夠監聽事件 來實現事件發生時執行特定的操做

  1. 鼠標事件 鼠標動時觸發的事件
  • 元素.onclick = function{} 單機事件
  • 元素.ondbclick = function(){} 雙擊事件
  • 元素.onmouseenter = function(){} 鼠標移入
  • 元素.onmouseleave = function(){}鼠標移出
  • 元素.onmouseover = function(){} 鼠標滑過
  • 元素.onmouseout = function () {} 鼠標劃出
  • 元素.onmousemove = function () {} 鼠標移動
  • 元素.onmousedown = function () {} 鼠標按下
  • 元素.onmmouseup = function () {} 鼠標擡起
  • 元素.onmousewheel = function () {} 鼠標滾輪滾動
  1. 鍵盤事件 input、textarea、document.body、document、window、document.documentElement 監聽鍵盤事件
  • 元素.onkeydown = function() {} 鍵盤按下
  • 元素.onkeyup = function () {} 鍵盤擡起
  1. 表單元素事件
  • onfocus 獲取焦點(光標)事件
  • onblur 失去焦點時觸發
  • onchange 事件,表單的值(value)發生改變時觸發
  • oninput input、textarea 等元素的輸入事件
  1. 系統事件
  • window.onload 頁面中全部的資源所有加載完觸發
  • window.onresize 當前窗口尺寸發生改變時觸發
  • window.onsroll 滾動條滾動時觸發
  1. 移動端事件
  • ontouchstart 觸摸元素時觸發
  • ontouchend 離開元素時觸發
  • ontouchmove 滑動時觸發
  • 移動端使用 click 大概有 300ms 的延遲

事件對象

在事件觸發時 瀏覽器傳遞給事件函數的實參 其中包含了本次事件觸發的具體信息瀏覽器

  • e.clientX 鼠標點擊的位置相對於當前瀏覽器可視窗口的 左偏移值
  • e.clientY 鼠標點擊位置相對於當前瀏覽器可視窗口的 上偏移值
  • e.pageX 鼠標點擊位置相對於 body 左邊緣的偏移值
  • e.pageY 鼠標點擊位置相對於 body 上邊緣的偏移值
  • e.target 觸發事件的元素(點擊事件中是點擊的元素)對象,稱爲事件源
  • IE 事件觸發時把事件信息掛載在 window.event 這個屬性上
  • e.keyCode 鍵碼:鍵盤上每一個鍵對應一個鍵碼,當 keydown 事件觸發時

默認事件 和 默認行爲

  • e.preventDefault(); 阻止元素的事件默認行爲
  • IE 低版本:e.returnValue = false
  • return false; return false 也能夠阻止默認行爲

事件觸發過程

  • 捕獲階段 事件觸發時,瀏覽器先從最外層的元素開始找,一直找到事件源的過程稱爲捕獲階段
  • 目標階段
  • 冒泡事件 觸發事件源綁定事件後開始向上冒泡,依次觸發父級元素的該事件
  • 元素.onXXX = func... 綁定的事件都是 DOM0 級事件,DOM0 級事件都是綁定在冒泡階段的
  • 取消冒泡 e.stopPropagation()
    • IE低版本下 e.cancelBubble = true;
    • 取消冒泡後,事件不會再向上傳播;更高層級的元素的對應事件不會觸發
    • over 屬於劃過事件,從父元素進入子元素,屬於離開了父元素
    • enter 屬於進入,從父元素進入子元素,不算離開父元素,不會觸發父元素的 leave 事件 父子嵌套的這種狀況,使用 over 會觸發不少不可控的狀況,使用 enter 更加簡單

onload 和 DOMContentLoaded

  • a.onload事件 加載成功後執行
  • window.onload 當頁面中全部資源所有加載完成後再執行
  • a. DOMContentLoaded 只要頁面中的DOM結構加載完成後就觸發
  • JS是用來操做DOM的 通常須要在DOM加載完成以後再執行JS

事件委託

  • 把事件綁定給父級元素或者更高級元素,而後根據e.target事件源做出不一樣操做
  • 利用事件的冒泡傳播機制,給裏面的每一個子元素綁定相同的事件行爲,把事件綁定給他們共同的上級元素,而後利用e.target區分具體觸發事件的元素,而後作不一樣的操做
相關文章
相關標籤/搜索