美文网首页
js实现一些跨浏览器的兼容事件方法

js实现一些跨浏览器的兼容事件方法

作者: 殖民_FE | 来源:发表于2017-06-06 08:46 被阅读0次

用JavaScript实现事件的绑定,移除,以及一些常用的事件属性的获取,时常要考虑到在不同浏览器下的兼容性,下面给出了一个跨浏览器的事件对象:

var EventUtil = {
    on: function(element, type, handler) {/* 添加事件 */
        if (element.addEventListener) {
            element.addEventListener(type, handler, false);
        } else if (element.attachEvent) {//IE  注意:此时事件处理程序会在全局作用域中运行,因此用attachEvent绑定的事件,此时在事件处理函数里的this 等于window,使用时要注意

            element.attachEvent("on" + type, handler);
        } else {
            element["on" + type] = handler;
        }
    },

    off: function(element, type, handler) {/* 移除事件 */
        if (element.removeEventListener) {
            element.removeEventListener(type, handler, false);
        } else if (element.detachEvent) {
            element.detachEvent("on" + type, handler);
        } else {
            element["on" + type] = null;
        }
    },

    getEvent: function(event) {/* 返回对event对象的引用 */
        return event ? event : window.event;
    },

    getTarget: function(event) {/* 返回事件的目标 */
        return event.target || event.srcElement;
    },

    preventDefault: function(event) { /* 取消事件的默认行为 */
        if (event.preventDefault) {
            event.preventDefault();
        } else {
            event.returnValue = false;
        }
    },

    stopPropagation: function(event) {/* 阻止事件冒泡 */
        if (event.stopPropagation) {
            event.stopPropagation();
        } else {
            event.cancelBubble = true;
        }
    },

    /* mouseover 和mouserout 这两个事件都会涉及把鼠标指针从一个元素的边界之内移动到另一个元素的边界之内。*/
    getRelatedTarget: function(event) {
        if (event.relatedTarget) {
            return event.relatedTarget;
        } else if (event.toElement) {//IE8 mouserout事件
            return event.toElement;
        } else if (event.fromElement) {//IE8 mouseover事件
            return event.fromElement;
        } else {
            return null;//其他事件
        }
    }
}

调用如下:

EventUtil.on(document, "click", function(event){//为document元素绑定click事件
    event = EventUtil.getEvent(event);//获取event事件对象
    alert("Screen coordinates: " + event.screenX + "," + event.screenY);
});

相关文章

  • js实现一些跨浏览器的兼容事件方法

    用JavaScript实现事件的绑定,移除,以及一些常用的事件属性的获取,时常要考虑到在不同浏览器下的兼容性,下面...

  • 「DOM 编程」事件

    DOM 事件事件流事件注册注册事件取消事件触发事件浏览器兼容型兼容低版本代码实现事件对象属性和方法通用属性和方法阻...

  • 事件捕获和事件冒泡

    因为兼容ie,一般使用事件冒泡 事件 js和浏览器交互通过事件实现 事件流 页面元素接受事件的顺序 事件捕获 从根...

  • 合成事件中e.persist()方法

    合成事件 合成事件对象实例为SyntheticEvent,他是浏览器原生事件的跨浏览器包装器,能够兼容所有浏览器,...

  • JS 实现localStorage、sessionStorage

    1. JS实现缓存(兼容一些旧版不支持storage的浏览器) 实现思路: a. 缓存在localStorage或...

  • 文本溢出显示省略号

    CSS实现 1. 单行 2. 多行 3.跨浏览器兼容

  • JS事件兼容 - 列表整理

    事件兼容 备注: IE9及以上浏览器2种事件都支持,IE8及以下只支持IE浏览器列表的事件方法,所以要做浏览器兼容...

  • JavaScript的事件机制详解

    【js事件详解】js事件封装函数,js跨浏览器事件处理机制 一、事件流 事件流描述的是从页面中接受事件的顺序。IE...

  • 关于jQuery

    1.JS存在的问题: 浏览器兼容问题 存在复杂的dom操作 复杂的特效和动画的实现 请求网络数据存在跨域问题 2....

  • 鼠标滚轮事件

    使用js对鼠标滚轮事件进行控制,滚轮事件其中考虑浏览器兼容性问题其中火狐浏览器事件为:"DOMMousescrol...

网友评论

      本文标题:js实现一些跨浏览器的兼容事件方法

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