美文网首页
事件对象及实例

事件对象及实例

作者: 六月太阳花 | 来源:发表于2017-02-06 15:36 被阅读0次

事件对象: 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('上');
           }
       }); 

相关文章

  • 事件对象及实例

    事件对象: event兼容性: 兼容 Chrome IE系列 不兼容FireFox在FF里: ev ...

  • JS实例-事件对象

    事件对象:存储了(描述了)事件更加详细的信息 eg:div跟着鼠标走*** 使用clientX,clientY 最...

  • ABAP面相对象

    类 对象 方法 继承 接口 事件 类生成器 实例: 根据类创建过程中为实例化,且根据类的创建对象为实例,对象代表所...

  • JS实例-事件对象2

    鼠标滚轮滚动: 鼠标滚轮事件:在页面滚动鼠标滚轮弹出1:onmousewheel -> 当滚动鼠标的滚轮的时候兼容...

  • iOS 实例方法和类方法中的self与self.class有什么

    问题:下面代码中self及self.class区别在哪? 实例方法实例方法.png self:指的是当前实例对象 ...

  • Node Native (1) event

    所有能触发事件的对象都是 EventEmitter 类的实例。 这些对象开放了一个 eventEmitter.on...

  • JS Object 实例的方法与属性

    Object实例的方法及属性 object.constructor // 对象的继承属性,其指向对象的构造函...

  • event 事件对象

    event 对象及使用 event 对象是什么? event 对象表示事件的状态,当 dom 树中某个事件被触发时...

  • jQuery图片预加载

    核心内容实例化image对象监听load事件和error事件为src赋上正确的图片路径

  • TS中使用单例模式实例对象,及存取值

    单例模式实例对象优点:可以保证实例对象的唯一性,及数据的正确性 示例代码:model层(数据层) controll...

网友评论

      本文标题:事件对象及实例

      本文链接:https://www.haomeiwen.com/subject/tlwyittx.html