事件對象及實例

事件對象: event
兼容性: 兼容 Chrome IE系列 不兼容FireFox
在FF里: ev 系統傳過來的事件
事件 = function(ev){
event 兼容 除了FF
ev 兼容性 FF Chrome IE9+
解決: var oEvent = ev || event;
var oEvent = event || ev; // × 因為event在FF下報錯
}
var oEvent = ev || event;
事件冒泡:
子元素的事件會傳遞到父元素,如果父元素有這個事件,那就執行
如果父元素沒有這個事件,再向上找
//阻止冒泡
oEvent.cancelBubble = true;

onkeydown -- 當鍵盤按下的時候
onkeyup -- 當鍵盤抬起的時候

事件詳情: var oEvent = ev || event;
keyCode:  是數字,而且是一些連續的數字
    A   65
    B   66
      
    a    97

    0   48
    1   49
    2   50

    上   38
    下   40
    左   37
    右   39

    空格  32
    回車  13
    ctrl    17
    alt 18
    shift 16

    退格  8
    組合:
        oEvent.ctrlKey;
        oEvent.altKey;
        oEvent.shiftKey;

阻止默認行
return false; 兼容:chrome ff ie9+
針對低級瀏覽器:
事件捕獲 obj.setCapture();
事件綁定
綁定:addEventListener('click',fn,false);
解綁:removeEventListener('click',fn,false);
綁定:attachEvent('onclick',fn);
解綁:detachEvent('onclick',fn);
捕獲:事件下沉 和 事件冒泡對應的

        function addEvent(obj,sEv,fn){
            if(obj.addEventListener){
                obj.addEventListener(sEv,fn,false);
            }
            else{
                obj.attachEvent('on'+sEv,fn)
            }
        }

拖拽:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{margin:0; padding:0;}
        #div1{
            width: 100px;
            height: 100px;
            background: red;
            position: absolute;
            left:200px;
            top:200px;
        }
    </style>
    <script>
        window.onload = function(){
            var oDiv = document.getElementById('div1');
            oDiv.onmousedown = function(ev){
                var oEvent = ev || event;
                var disX = oEvent.clientX - oDiv.offsetLeft;
                var disY = oEvent.clientY - oDiv.offsetTop;
                document.onmousemove = function(ev){
                    var oEvent = ev || event;
                    var l = oEvent.clientX - disX;
                    var t = oEvent.clientY  - disY;

                    if(l <= 100){
                        l = 0;
                    }
                    if (l >= (document.documentElement.clientWidth - oDiv.offsetWidth-100)){
                        l = document.documentElement.clientWidth - oDiv.offsetWidth;
                    }
                    if(t <= 100){
                        t = 0;
                    }
                    if(t >= (document.documentElement.clientHeight - oDiv.offsetHeight-100)){
                        t = document.documentElement.clientHeight - oDiv.offsetHeight;
                    }
                    oDiv.style.left = l + 'px';
                    oDiv.style.top = t + 'px';
                };
                document.onmouseup = function(){
                    document.onmousemove = null;
                    document.onmouseup = null;
                    oDiv.releaseCapture && oDiv.releaseCapture();
                };
                oDiv.setCapture && oDiv.setCapture();
                return false;

            };
        };
    </script>
</head>
<body>
<div id="div1"></div>
</body>
</html> 

滾輪事件:

function addEvent(obj,sEv,fn){
           if(obj.addEventListener){
               obj.addEventListener(sEv,fn,false);
           }
           else{
               obj.attachEvent('on'+sEv,fn);
           }
       }
       function addWheel(obj,fn){  
           function wheel(ev){
               var oEvent = ev || event; 
               var bDown =  oEvent.wheelDelta ? oEvent.wheelDelta>0 : oEvent.detail>0; 
               fn && fn(bDown);
           }
           if(window.navigator.userAgent.toLowerCase().indexOf('firefox') != -1){
               addEvent(document,'DOMMouseScroll',wheel) 
           }else{
               addEvent(document,'mousewheel',wheel)
           }
       } 
       addWheel(document,function(bDown){
           if(bDown){
               alert('下');
           }
           else{
               alert('上');
           }
       }); 
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、DOM 什么是DOM?Document Object Model(文檔對象模型)。DOM是針對HTML和XML...
    空谷悠閱讀 988評論 0 2
  • <a name='html'>HTML</a> Doctype作用?標準模式與兼容模式各有什么區別? (1)、<...
    clark124閱讀 3,569評論 1 19
  • 轉載 前端開發面試題 <a name='preface'>前言</a> 本文由我收集總結了一些前端面試題,初學者閱...
    小九喵喵閱讀 485評論 0 0
  • @轉自GitHub 介紹js的基本數據類型。Undefined、Null、Boolean、Number、Strin...
    YT_Zou閱讀 1,209評論 0 0
  • 如果一個人能做一塊心胸開闊,有建設性思維的海綿,便能有容乃大,從萬事萬物上都能汲取養分,也能真真正正地學到更多。但...
    巧克力媽媽閱讀 99評論 0 0