js筆記:事件(上)
阿新 • • 發佈:2019-01-08
1、什麼是事件
是指使用者在某事務上由於某種行為所執行的操作; (對頁面元素的某種操作)
2、 事件的三要素
事件源:是指在哪個元素引發的事件,如:a標籤、div標籤
事件:事件是指執行的動作
如:單擊、雙擊等
事件驅動程式(事件處理程式):即執行的結果
如:單擊button標籤所執行的函式
3、event
event物件,被稱為事件物件。
因此它只會在發生一個事件時可用。不同的事件產生的事件物件不同
存在相容 :
在IE中,獲取event物件:
xxx.onclick = function(){
alert(window.event);
}
在非IE瀏覽器,獲取event物件,用傳參的方式:
xxx.onclick = function(
e ){
console.log(e)
相容問題 : e = e || window.event
}
4、event.button屬性介紹
button屬性 : 用來確認使用者操作的是左鍵 滾輪 右鍵
左鍵 0
滾輪 1
右鍵 2
5、 event.clientX、event.clientY event.pageX、event.pageY event.offsetX、event.offsetY
event.pageX、event.pageY
它們使用的是文件座標而非視窗座標,也就是滑鼠到頁面的距離
event.offsetX、event.offsetY
滑鼠到盒子本身的距離
6、鍵盤事件
1、onkeydown :鍵盤按下觸發事件,功能鍵也能識別(shift / ctrl / alt);不能識別大小寫;
2、onkeyup : 鍵盤彈起觸發事件;也能識別功能鍵 不能識別大小寫
3、onkeypress:鍵盤按下觸發事件,不能識別功能鍵的keyCode;能識別大小寫;
7、組合鍵ctrlKey、altKey
ctrlKey 事件屬性可返回一個布林值,指示當事件發生時,Ctrl 鍵是否被按下
altKey 事件屬性返回一個布林值。指示在指定的事件發生時,Alt 鍵是否被按下
8、keyCode/which相容
keyCode/which 獲取鍵盤的按鍵值
IE8 及其更早版本不支援 which 屬性。不支援的瀏覽器可使用
keyCode 屬性。但是, keyCode 屬性在 Firefox 瀏覽器的 onkeypress 事件中是無效的。 相容這些瀏覽器你可以使用以下程式碼
var x = event.which || event.keyCode; 使用 which 或 keyCode, 這樣可支援不同瀏覽器
注意: 在onkeypress事件中, 如果按住ctrl + 回車 ,此時,回車鍵的keyCode的值為10
9、事件流
當產生某個事件時,事件從子元素向父元素觸發或從父元素向子元素觸發的過程 稱為事件流
事件流的兩種模式 :
事件冒泡 --- 從子元素向父元素觸發 small ---> big --> body ---> document ---> window
事件捕獲 --- 從父元素向子元素觸發 window -- > document --- > body --- > big --> smal
10、事件冒泡
事件從事件目標(target)開始,往上冒泡直到頁面的最上一級標籤
阻止事件冒泡相容:
e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;
event.clientX、event.clientY
滑鼠相對於瀏覽器視窗可視區域的X,Y座標(視窗座標),可視區域不包括工具欄和滾動條