event(事件對象)概念及作用
在觸發(fā)DOM上某個事件時橄仍,會產生一個事件對象event,這個對象包含著所有事件相 關的信息,包含導致事件的元素奢驯,事件的類型以及其他的與特定事件相關的信息估蹄。
它是事件綁定中的一個隱藏的參數颂碧,可以通過arguments[0]來獲取
獲取事件對象的方式
- 在W3C標準中,直接在函數中聲明該參數即可
- 老版本的IE瀏覽器--window.event;
兼容寫法
document.onclick=function(ev){
var ev=ev||window.event;
console.log(ev);
}
event.button屬性介紹--鼠標事件
如果當前event是鼠標事件类浪,則會有一個button屬性载城,它是一個數字:
0代表鼠標按下了左鍵 1代表按下了滾輪 || 2代表按下了右鍵
不過老版本的IE并沒有遵守W3C的規(guī)范,它的button屬性含義如下:
1鼠標左鍵 2鼠標右鍵 3左右同時按 4滾輪 5左鍵加滾輪 6右鍵加滾輪 7三個同時
ev.which
费就,既可以獲取鼠標鍵的值(1.2.3)诉瓦,還可以獲取鍵盤鍵入值的鍵盤編碼,IE8不支持力细;onmousedown
:當鼠標按下
鼠標事件中獲取鼠標的位置屬性介紹(clientX睬澡、pageX、offsetX眠蚂、screenX)
鼠標位置
clientX,clientY:鼠標相對于可視區(qū)的位置煞聪。
pageX,pageY:鼠標相對于文檔的位置。
offsetX,offsetY:鼠標相對于操作元素(鼠標點擊元素)到盒子邊緣(左上)的位置.
screenX,screenY:鼠標相對于顯示屏的位置.
鍵盤事件
onkeydown + onkeyup =onpress
keyCode/which兼容 : 獲取鍵盤上按鍵對應的unicode編碼
event.keyCode || event.which IE不支持(ie8)
組合鍵ctrlKey逝慧、altKey昔脯、shiftKey (例如:ev.ctrlKey)
if(event.keyCode == 13 && event.ctrlKey) { //ctrl+enter }
事件流
- 事件流描述的是從頁面中接收事件的順序。
- 事件的冒泡
IE 的事件流叫做事件冒泡笛臣,即事件開始時由最具體的元素(文檔中嵌套層次最深的那個節(jié) 點)接收云稚,然后逐級向上傳播到較為不具體的節(jié)點(文檔) 。
取消冒泡:具體元素對象(冒泡元素)的事件不會冒泡到父級(外層)沈堡。
非標準(ie8及以下): ev.cancelBubble=true;
標準:ev.stopPropagation();
應用
1.光標的實時顯示
2.png
2.跟隨鼠標的提示框
3.jpg
3.輸入框默認提示(placeholder)onfocus/onblur
4.png
4.擴展案例:表格的即時編輯
5.CSS模擬下拉菜單(select)
5.png
綜合應用
6.png