美文网首页程序员
关于JavaScript跨浏览器事件的处理

关于JavaScript跨浏览器事件的处理

作者: ManShow先生 | 来源:发表于2018-10-13 15:01 被阅读39次

一、4种事件处理程序

事件就是用户或浏览器自身执行的某种操作,而事件处理程序即为响应某个事件的函数。事件处理程序大致分为5种:

  1. HTML 事件处理程序
  2. DOM 0级事件处理程序
  3. DOM 2级事件处理程序
  4. IE 事件处理程序

二、HTML 事件处理程序

什么是 HTML 事件处理程序呢? 显然,HTML 事件处理程序是写在 HTML 标签内的函数。
HTML 事件处理程序有两种写法:

  1. 最常见的是 HTML 中的事件处理
<button onclick="alert('我是HTML事件处理程序方法1')">按钮1</button>
  1. 调用页面中的函数执行
<button onclick="test()">按钮2</button>
<script type="text/javascript">
  function fun(){
    alert('我是HTML事件处理程序方法2');
  };
</script>

但是 HTML 事件处理程序存在着一些问题,比如修改时需要该动HTML代码和函数处理的的代码,比较麻烦。

三、DOM 0级事件处理程序(所有浏览器都支持)

DOM 0级事件处理程序是将一个函数赋值给一个事件处理程序属性。

<button id="btn">我是DOM 0级事件处理程序</button>

<script type="text/javascript">
  var btn = document.getElementById("btn");
  btn.onclick = function(){
    alert("我是DOM 0级事件处理程序");
  }
</script>

删除事件处理程序的方法是:

btn.onclick = null;

四、DOM 2级事件处理程序(只有IE9、chrome、safari和opera支持)

DOM 2级事件处理程序有两个方法:

  1. addEventListener() //添加事件监听器
  2. removeEventListener() //移除事件监听器

参数:

  1. type --事件名,如:click、change、mouseover等
  2. handler --事件处理函数
  3. true/false --true:捕获阶段调用事件处理程序,false:冒泡阶段调用事件处理程序。

例子:

<button id="btn">我是DOM 2级事件处理程序</button>

<script type="text/javascript">
  var btn = document.getElementById("btn");
  var test = function(){
    alert("我是DOM 2级事件处理程序!");
  };
  // 添加事件监听器
  btn.addEventListener("click", test, false);
  // 移除事件监听器
  btn.removeEventListener("click", test, false);
</script>

五、IE事件处理程序

IE事件处理程序同样也有两个方法:

  1. attachEvent() //添加事件
  2. detaEvent() //移除事件

参数:

  1. type --事件名,如:click、change、mouseover等
  2. handler --事件处理函数

例子:

<button id="btn">我是IE事件处理程序</button>

<script type="text/javascript">
  var btn = document.getElementById("btn");
  var test = function(){
    alert("我是IE事件处理程序!");
  };
  // 添加事件
  btn.attachEvent("onclick", test);
  // 移除事件
  btn.detaEvent("onclick", test);
</script>

六、跨浏览器事件处理程序

<button id="btn">我是跨浏览器事件处理程序</button>

<script type="text/javascript">
    function showMes(){
        alert('我是跨浏览器事件处理程序');
    };
    var btn = document.getElementById('btn');
    <!-- 跨浏览器事件处理程序 -->
    var eventUtil = {
        // 添加句柄(handler:触发什么操作)
        addHandler: function(element, type, handler){
            if (element.addEventListener) {
                // DOM 2级事件处理程序判断
                element.addEventListener(type, handler, false);
            } else if (element.attachEvent) {
                // IE 事件处理程序判断
                element.attachEvent('on'+type, handler);
            } else {
                // DOM 0级事件处理程序判断
                element['on'+type] = handler;
            }
        },
        // 删除句柄(handler:触发什么操作)
        removeHandler: function(element, type, handler){
            if (element.removeEventListener) {
                // DOM 2级事件处理程序判断
                element.removeEventListener(type, handler, false);
            } else if (element.detachEvent) {
                // IE 事件处理程序判断
                element.detachEvent('on'+type, handler);
            } else {
                // DOM 0级事件处理程序判断
                element['on'+type] = null;
            }
        }
    };
    eventUtil.addHandler(btn, 'click', showMes);
    eventUtil.removeHandler(btn, 'click', showMes);
</script>

注:要想弹出对话框就要注释掉调用移除函数的代码,比如:

eventUtil.removeHandler(btn, 'click', showMes);
希望本文对大家的学习能够有所帮助,感谢大家的阅览!

欢迎大家关注我的博客

相关文章

  • javascript 之事件处理函数和事件对象

    本文主要谈及问题: 关于编写跨浏览器的事件处理函数和事件对象 关于编写跨浏览器的事件处理函数和事件对象 为什么要编...

  • Javascript事件小结

    本篇文章主要讲解Javascript的事件,如下: 事件流 如何注册和删除事件 跨浏览器的事件处理程序和事件对象 ...

  • 关于JavaScript跨浏览器事件的处理

    一、4种事件处理程序 事件就是用户或浏览器自身执行的某种操作,而事件处理程序即为响应某个事件的函数。事件处理程序大...

  • JS 事件

    目录 事件流 事件处理程序HTML事件处理程序DOM0级事件处理程序DOM2级事件处理程序IE事件处理程序跨浏览器...

  • JavaScript-高级篇之事件

    什么是事件 掌握事件流 掌握DOM事件流与IE事件处理程序 掌握跨浏览器的事件处理程序 掌握event对象的常用属...

  • JavaScript事件02——事件处理程序

    大纲:概念(事件处理程序)事件处理程序(HTML事件,DOM0级,DOM2级,IE事件,跨浏览器) 一、概念: 1...

  • JavaScript 经典实例收集整理

    跨浏览器添加事件 跨浏览器移除事件 跨浏览器阻止默认行为 跨浏览器获取目标对象 跨浏览器获取滚动条位置 跨浏览器获...

  • 跨浏览器的事件兼容

    我们都知道,在不同的浏览器下,添加和移除事件处理程序方式有所相同,要想写出跨浏览器的事件处理程序,首先我们要了解不...

  • 浏览器兼容

    前面内容我们可以看到,在不同的浏览器下,添加和移除事件处理程序方式不相同,要想写出跨浏览器的事件处理程序,首先我们...

  • 你知道页面上常见的事件类型吗

    我们常用的事件类型有UI事件,焦点事件,鼠标事件,滚轮事件,键盘事件和文本事件,用了跨浏览器添加事件处理程序的方法...

网友评论

    本文标题:关于JavaScript跨浏览器事件的处理

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