js網(wǎng)頁特效(四)事件

1.事件

(1)事件對象的兼容性寫法

var event = event || window.event;

event對象常用屬性

屬性         作用
-----------------------------------------------------
data        返回拖拽對象的URL字符串(dragDrop)
width       該窗口或框架的高度
height      該窗口或框架的高度
pageX       光標相對于該網(wǎng)頁的水平位置(ie無)
pageY       光標相對于該網(wǎng)頁的垂直位置(ie無)
screenX     光標相對于該屏幕的水平位置
screenY     光標相對于該屏幕的垂直位置
target      該事件被傳送到的對象
type        事件的類型
clientX     光標相對于該客戶區(qū)的水平位置 
clientY     光標相對于該客戶區(qū)的垂直位置

三個事件的重要坐標:

clientX clientY
當前窗口的左上角為基準點

pageX pageY
以當前文檔的左上角為基準點

screenX screenY
當前屏幕的左上角為基準點

注意:
IE678不支持pageX和pageY 但是我們可以采取另一種方式
client和documentElement.scroll在IE678中都支持

var pageY = event.pageY || event.clientY +
            document.documentElement.scrollTop;
var pageX = event.pageX || event.clientX + 
            document.documentElement.scrollLeft;

示例代碼:

document.onclick = function (event) {
        //var event = event || window.event;
    var event = eventUtil.getEvent(event);

        console.log("client: " + event.clientX + "--" + event.clientY);//瀏覽器
        //page有兼容問題 client沒有 我們可以用client來計算page
  //var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
        //var pageX = getPageX(event);
    var pageX = eventUtil.getPageX(event);

  //var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
    var pageY = getPageY(event);

    console.log("page: " + event.pageX + "--" + event.pageY);//頁面

    console.log("screen: " + event.screenX + "--" + event.screenY);//屏幕
};

常用事件:

    onmouseover  鼠標經(jīng)過
    onmouseout  鼠標離開
    onmousedown  鼠標按下
    onmouseup    鼠標彈起      
    onmousemove  鼠標移動

其他內容:

1.清除選中的內容

window.getSelection ? window.getSelection().removeAllRanges()  
                    : document.selection.empty();  //三目運算
正常瀏覽器支持:window.getSelection() 
IE678以下支持:document.selection 
 

2.判斷文字選中

 window.getSelection ? window.getSelection().toString() 
                : document.selection.createRange().text;//三目運算符

(2)事件注冊的兩種方式

element.addEventListener(“事件類型”,”事件處理函數(shù)”,”是否使用捕獲”)

特點:

addEventListener的好處是不會將其他事件覆蓋,但是有兼容性問題

removeEventListener可以移除指定事件

addEventListener便于管理事件隊列 但一般用on的就可以了比較簡單

(3)事件冒泡的三個階段

1捕獲階段
2目標階段   //執(zhí)行當前對象的事件處理程序
3冒泡階段

阻止事件冒泡:

//兼容性寫法
function stopPropagation(event) {
    if (event.stopPropagation) {
        event.stopPropagation();
    } else {
        event.cancelBubble = true;
    }
}

事件兼容性總結(封裝函數(shù)):

function getEvent(event) {
//事件的兼容性
return event || window.event;
}

//page的兼容性
function getPageX(event) {
return event.pageX || event.clientX + document.documentElement.scrollLeft;
}
function getPageY(event) {
return event.pageY || event.clientY + document.documentElement.scrollTop;
}

//冒泡事件的兼容性問題
function stopPropagation(event) {
if (event.stopPropagation) {
    event.stopPropagation();
} else {
    event.cancelBubble = true;
}
}

//獲取目標事件兼容性的問題
function getTarget(event) {
return event.target || event.srcElement;
}

//對兼容性封裝的函數(shù)
var eventUtil = {
getEvent: function (event) {
    return event || window.event;
},
getPageX: function (event) {
    return event.pageX || event.clientX + document.documentElement.scrollLeft;
},
getPageY: function (event) {
    return event.pageY || event.clientY + document.documentElement.scrollTop;
},
stopPropagation: function (event) {
    if (event.stopPropagation) {
        event.stopPropagation();
    } else {
        event.cancelBubble = true;
    }
},
getTarget: function (event) {
    return event.target || event.srcElement;
}
};

2.鼠標事件和鍵盤事件

常用鼠標事件:

mousedown、mouseup、mousemove、mouseover、mouseout、click、dblclick

onmousedown鼠標按下 onmouseup鼠標彈起

onmouseclick=onmousedown+onmouseup

常用鍵盤事件:

keydown、keypress、keyup onkeydown鍵盤按下 onkeyup鍵盤彈起

onkeypress=onkeydown+onkeyup

onkeydown onkeyup 輸出的是鍵盤碼 onkeypress輸出的是ASCII碼表

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1.事件 (1)事件對象的兼容性寫法 event對象常用屬性 三個事件的重要坐標: clientX clien...
    楓丶筱閱讀 374評論 0 0
  • 事件 2.什么是事件? onchange內容發(fā)生改變的時候觸發(fā) 1)鼠標事件MouseEvent 1. oncli...
    web前端ling閱讀 653評論 0 0
  • 親愛的朋友, 祝好!發(fā)現(xiàn)這幾日給你寫信的頻率越來越高,基本能做到每日一封,其實并不是因為我閑了下來,反而是因為我...
    居無所處閱讀 207評論 0 1

友情鏈接更多精彩內容