前言:
只要還有明天,今天就永遠是起跑線
--------------------------------正文---------------------------------
setCapture可以將鼠標事件鎖定在指定的元素上,當元素捕獲了鼠標事件后,該事件只能作用在當前元素上
releaseCapture()可以為指定的元素解除事件鎖定
以下情況會導(dǎo)致事件鎖定失?。?/h5>
1、當窗口失去焦點時,鎖定的事件,自動就會取消
2、alert也會導(dǎo)致事件的鎖定取消。解決辦法是在alert之后再次鎖定
3、鼠標右鍵也會導(dǎo)致事件解鎖
setCapture只可以作用于以下事件:
onclick
ondblclick
onmousedown
onmouseup
onmouseover
onmouseout
1、當窗口失去焦點時,鎖定的事件,自動就會取消
2、alert也會導(dǎo)致事件的鎖定取消。解決辦法是在alert之后再次鎖定
3、鼠標右鍵也會導(dǎo)致事件解鎖
onclick
ondblclick
onmousedown
onmouseup
onmouseover
onmouseout
setCapture不可作用于鍵盤等其它事件,只能作用于鼠標事件
主要用于: onmouseover 與 onmouseout 事件。
addEventListener() 方法用于向指定元素添加事件句柄
EventTarget.addEventListener() 方法將指定的監(jiān)聽器注冊到 EventTarget 上,當該對象觸發(fā)指定的
事件時,指定的回調(diào)函數(shù)就會被執(zhí)行。 事件目標可以是一個文檔上的元素 Document 本身,或者任何其他支持
事件的對象 (比如 XMLHttpRequest)
removeEventListener() 方法用于移除由 addEventListener() 方法添加的事件句柄
通過addEventListener()添加的事件處理程序只能使用removeEventListener()來移除
注意: 如果要移除事件句柄,addEventListener() 的執(zhí)行函數(shù)必須使用外部函數(shù)
格式
addEventListener("事件名" , "事件處理函數(shù)" , "布爾值")
注意:兩個都要用時函數(shù)不能帶參數(shù),不然不能移除
eg:
document.body.addEventListener('touchmove',bodyScroll,false)
document.body.removeEventListener('touchmove',bodyScroll,false)
使用window.navigator.userAgent屬性判斷瀏覽器類型及版本
滾輪封裝
// 添加事件監(jiān)聽
function addEvent(obj,sEv,fn){
// attachEvent——兼容:IE7、IE8; 不兼容firefox、chrome、IE9、IE10、IE11、safari、opera
// addEventListener——兼容:firefox、chrome、IE、safari、opera; 不兼容IE7、IE8
if(obj.addEventListener){
obj.addEventListener(sEv,fn,false);
}else{
obj.attachEvent('on'+sEv,fn);
}
}
// 刪除事件監(jiān)聽
function removeEvent(obj,sEv,fn){
if(obj.removeEventListener){
obj.removeEventListener(sEv,fn,false);
}else{
obj.detachEvent('on'+sEv,fn);
}
}
// 滾輪事件
function addWheel(obj,fn){
// 判斷瀏覽器是否是Firefox
// 使用window.navigator.userAgent屬性判斷瀏覽器類型及版本
if(window.navigator.userAgent.indexOf('Firefox')!=-1){
addEvent(obj,'DOMMouseScroll',fnWheel);
}else{
addEvent(obj,'mousewheel',fnWheel);
}
// 滾輪觸發(fā)執(zhí)行函數(shù)
function fnWheel(ev){
var oEvent = ev||event;
// ture 下
// false 上
var bDir = true;
// 判斷滾動方向
bDir = oEvent.wheelDelta?oEvent.wheelDelta<0:oEvent.detail>0;
/* if(oEvent.wheelDelta){
//other
if(oEvent.wheelDelta<0){
bDir = true;
}else{
bDir = false;
}
}else{
//firefox
if(oEvent.detail>0){
bDir = true;
}else{
bDir = false;
}
} */
// 執(zhí)行回調(diào)函數(shù)
fn&&fn(bDir);
// 阻止默認事件 addEventListener沒有return false
ev.preventDefault&&ev.preventDefault();
return false;
}
}