Event对象跨浏览器兼容性写法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Event对象跨浏览器兼容性写法</title>
</head>
<body>
    <script>
        var EventUtil={
            //添加事件
            addHandler:function(element,type,handler){
                if (element.addEventListener){
                    element.addEventListener(type,handler,false);
                }else if(element.attachEvent){
                    element.attachEvent("on"+type,handler);
                }else{
                    element["on"+type]=handler;
                }
            },
            //移除事件
            removeHandler: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]=handler;
                }
            },
            //获取事件本身
            getTarget:function (){
                return event.target || event.srcElement;
            },
            //阻止默认行为
            preventDefault:function (){
                if(event.preventDefault){
                    event.preventDefault();
                }else{
                    event.returnValue=false;
                }
            },
            //取消冒泡和捕获
            stopPropagation:function (){
                if(event.stopPropagation){
                    event.stopPropagation();
                }else{
                    event.cancelBubble=true;
                }
            }
        }
    </script>
    <!-- 测试 -->
    <div id="div">
        爸爸
        <button id="btn">儿子</button>
    </div>
    <a id="a" href="https://www.baidu.com/">百度</a>
    <script>
        var div=document.getElementById("div");
        var btn=document.getElementById("btn");
        EventUtil.addHandler(div,"click",function(){
            console.log("我是老子");
            console.log(EventUtil.getTarget(event));//获取target
        })
        EventUtil.addHandler(btn,"click",function(){
            console.log("我是儿子");
            EventUtil.stopPropagation();//阻止了冒泡
        })
        var a=document.getElementById("a");
        EventUtil.addHandler(a,"click",function(){
            console.log("我是链接");
            EventUtil.preventDefault();//阻止默认行为
        })
    </script>
</body>
</html>

原文地址:https://www.cnblogs.com/vinson-blog/p/12114809.html

时间: 2024-08-24 04:41:33

Event对象跨浏览器兼容性写法的相关文章

现代事件处理程序和Event对象对浏览器兼容性的判断和解决

兼容性问题的解决: 因为 IE 和 DOM 对于现代事件处理程序指派的方式不同,为了保证我们编写的代码在 IE 和 DOM浏览器系列下都能用,我们可以用如下代码来解决兼容性问题: var fnClick1 = function() { aleart("我被点击了";) } var fnClick2 = function() { aleart("我也被点击了";) } var oDiv = document.getElementById("div1"

牛人推荐的跨浏览器兼容性总结

牛人推荐的跨浏览器兼容性总结 [复制链接]        发送短消息 UID2427精华4积分239共享分12442 威望1285 查看公共资料 搜索主题 搜索帖子 灵雨飘零  技术总监 组别管理员 生日帖子470精华4积分239共享分12442 威望1285 在线时间28275注册时间2013-11-24  1# 字体大小: t T  发表于 2013-12-26 08:27 |只看楼主 一. CSS样式兼容 1. FLOAT闭合(clearing float) 网页在某些浏览器上显示错位很多

CSS浏览器兼容性写法小结

CSS浏览器兼容性写法小结 *        , ie6,ie7可以识别: _和- ,  ie6可以识别: !important  ,表示高优先级,ie7及以上,firefox都支持,ie6认识带!important的样式属性,但不认识!important的优先级: -webkit- ,针对safari,chrome浏览器的内核CSS写法 -moz-,针对firefox浏览器的内核CSS写法 -ms-,针对ie内核的CSS写法 -o-,针对Opera内核的CSS写法

JS-DOM2级事件对象跨浏览器处理(已封装)

1 var eventUill = { 2 //添加事件 3 addHander: function(element, type, handler) { 4 if(element.addEventListener) { 5 element.addEventListener(type, handler, false); 6 } else if(element.attachEvent) { 7 element.attachEvent('on' + type, handler); 8 } else {

js事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象

事件对象    在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息.包括导致事件的元素.事件的类型,以及其他与特定事件相关的信息.例如,鼠标操作导致的事件对象中,会包含鼠标位置的信息,而键盘操作导致的事件对象中,会包含与按下的键有关的信息.所有浏览器对象都支持event对象,但支持方式不同. DOM中的事件对象 兼容DOM的浏览器会将一个event对象传入到事件处理程序中.无论指定事件处理程序时使用什么方法(DOM0级或DOM2级),都会传入event

javascript 浏览器兼容性写法

var event = window.event || arguments.callee.caller.arguments[0]; // 获取event对象 event = event.srcElement || event.target; var obj = event.srcElement ? event.srcElement : event.target;

解决SVG跨浏览器兼容性问题

Raphael JS:SVG/VML+JS实现跨浏览器的矢量图形实现方案 http://blog.csdn.net/tiewen/article/details/8535748 SVG那些小事儿 http://www.w3cfuns.com/article-5601506-1-1.html Raphaël—JavaScript Library http://raphaeljs.com/ Raphael JS:SVG/VML+JS实现跨浏览器的矢量图形实现方案

BOM学习3--navigator对象跨浏览器检测插件

一,检测插件: 随着互联网的发展,HTML5的标准也成为开发网页的标准,其中比如H5的video标签,就可以直接嵌入到网页成为一个播放器,这就把传统的Flash播放器的功能给取代了.我们在开发不同的项目,可能会依据项目的不同需求,选择使用H5播放器或者Flash插件,这就需要我们在浏览器中识别安装的插件,下面就是一个跨浏览器的插件检测方法: 1,对于非IE浏览器,我们可以直接使用plugins这个数组来遍历插件,下面是数组每一项包含的属性: name: 插件的名字, description:插件

Event事件跨浏览器封装

1 var Event = { 2 //注册事件 3 addEvent: function(element,type,handler){ 4 if(element.addEventListener){ //DOM2级 5 element.addEventListener(type,handler,false); //false为冒泡,true为捕获 6 }else if(element.attachEvent){ //IE 7 element.attachEvent("on"+type