onclick
點擊onmouseup
鼠標彈起onmousedown
鼠標按下onmouseover
鼠標移動到元素上onmouseout
鼠標離開元素onmousemove
鼠標在元素上移動
拖拽事件
obj.onmousedown=function(){
……
document.onmousemove=function(){
……
return false;//清除默認事件(移動文字或圖片加載事件)
}
}
document.onmouseup=function(){
document.onmousemove=null;//清除自定義的鼠標移動事件,避免obj甩不掉。
}
滾輪事件
1.onmousewheel (Chrome與IE)
DOMMouseScroll (火狐) 只能用事件綁定方式添加
2.wheelDelta 用來判斷滾輪滾動的方向
onkeydown 鍵盤按下
onkeyup 鍵盤彈起
onkeypress 鍵盤按下并放開
onkeydown與onkeypress的區別:
(1)onkeydowm 指用戶按下任何鍵盤時發生;onkeyup指按下并放開任何字母數字鍵時發生。onkeydown先于onkeypress發生。
(2)onkeydowm捕獲的keyCode不區分大小寫,而onkeypress區分。
(3)onkeypress不能識別系統按鈕(如箭頭鍵和功能鍵等)
一些屬性:
(1)ev.keyCode;//返回鍵盤對應字符的ASCII碼,但不完全等同。
(2)ev.charCode;
(3)ev.ctrlKey;/ev.shiftKey;/ev.altKey;
當事件發生時,跟觸發的事件對象的所有信息都保存在event對象里面,包括事件類型,鼠標位置,事件函數等。
event對象是內置的全局對象,可以直接調用。其是在事件處理函數觸發時通過第一個參數傳入。如:
btn.onclick=function(ev){
console.log(ev);
}//IE8及以下不兼容。(event對象火狐不兼容?。?
//兼容處理:
btn.onclick=function(ev){
var ev = ev || event;
console.log(ev);
}//當第一個為真時,返回第一個值;如果第一個為假,則判斷第二個,若為真,返回第二個值;若兩個都為假,則返回undefined。
ev.clientX-------ev.clientY;
查看鏈接
全局捕獲(只有IE能使用)
btn.setCapture();//當一個元素設置了全局捕獲以后,這個元素監聽所有事件,當有事件發生時就會觸發這個元素的處理函數。(只捕獲一次)
btn.releaseCapture();
當一個元素接收到事件的時候,會把它接收到的事件依次傳播給它的父級,直到頂層window。
………… ---> body ---> document ---> window。
(IE8及以下沒有冒泡至window。)
ev.cancelBubble=true;//所有瀏覽器都支持!
ev.stopPropagation();//IE8及以下不兼容!
//兼容處理:
ev.stopPropagation() ? ev.stopPropagation() : ev.cancelBubble=true;
window.onload=function(){
var btn=document.getElementsByTagName("button")[0];
var oDiv=document.getElementsByTagName("div")[0];
btn.onclick=function(ev){
console.log("按鈕點擊了");
var ev=ev||event;
ev.cancelBubble=true;
//ev.stopPropagation();
}
oDiv.onclick=function(){
console.log("div點擊了");
console.log(event);
}
document.body.onclick=function(){
console.log("body點擊了");
}
document.onclick=function(){
console.log("document點擊了");
}
window.onclick=function(){
console.log("window點擊了");
}
}
傳統的添加事件的方法,如果同時添加兩個事件,前面的會被后面的覆蓋掉。
事件綁定:可以給同一對象的同一事件添加不同的事件處理函數。
IE(除IE11):
obj.attachEvent(事件名稱,處理函數);
btn.attachEvent("onclick",fun1);
btn.attachEvent("onclick",fun2);
//IE9,10:觸發時正序的;this指window。
//IE8及以下:觸發時倒序的,即先觸發fun2,再觸發fan1。this指object。
btn.addEventListener("click",fun1,true);
btn.addEventListener("click",fun2);//最后一個參數可不寫。
//觸發順序是正序。this指觸發該事件的對象,即button。
function bind(obj,ev,fun){
obj.attachEvent ? obj.attachEvent("on"+ev,fun) : obj.addEventListener(ev,fun);
}
傳統事件的取消
oDiv.onclick=function(){
alert("A");
oDiv.onclick=null;
}
oDiv.removeEventListener("click",fun);//有第三個參數:true/false;
oDiv.detachEvent("onclick",fun);
(1) 默認行為:當事件發生時,瀏覽器會默認做的事情。
(2) 阻止默認行為:當這個事件發生時,在處理函數里使用return false;如:
document.oncontextmenu=function(){return false;}//阻止右擊菜單的顯示。contextmenu指上下文事件。
(3) IE8及以下不兼容,使用全局捕獲(只能IE使用)。
(4) 用事件綁定方式的默認事件清除:
window.onload=function(){
document.addEventListener("contextmenu",function(ev){
var ev=ev||event;
// ev.preventDefault();
ev.returnValue=false;
},false);
document.attachEvent("oncontextmenu",function(){
var ev=ev||event;
ev.returnValue=false;
// return false;
})
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。