• DOM事件


    DOM事件

    1. 执行事件的步骤

    1. 获取事件源
    2. 注册事件(绑定事件)
    3. 添加事件处理程序(采取函数赋值形式)

    2. 注册事件(绑定事件)

    2.1 注册事件概述

    注册事件是指给元素添加事件。注册事件有两种方式,分别为传统方式方法监听注册方式

    2.2 传统注册方式

    // 1.
    <button onclick="alert('hello world')"></button>
    
    // 2.
    <button></button>
    <script>
        var btn = document.querySelector('button');
        btn.onclick = function() {
            alert('hello world');
    }
    </script>
    
    • 利用on开头的事件
    • 特点:注册事件的唯一性。同一个元素同一个事件只能设置一个处理函数,最后注册的处理函数会覆盖前面注册的处理函数。

    2.3 方法监听注册方式(推荐)

    element.addEventListener();
    
    • w3c标准 推荐方式
    • ie9之前的不支持此方法,可以使用attachEvent()代替
    • 特点:同一个元素同一个事件可以注册多个监听器,按注册顺序依次执行

    2.3.1 addEventListener事件监听方式

    eventTarget.addEventListener(type, listener[, useCapture]);
    

    该方法将指定的监听器注册到eventTarget(目标对象)上,当该对象触发指定的事件时,就会执行事件处理函数

    对于参数:

    • type:事件类型字符串(带引号),注意不要带on。eg.click、mouseover
    • listener:事件处理函数,事件发生时,会调用该监听函数
    • useCapture:可选参数,是一个布尔值,默认为false。如果是true时,表示在事件捕获阶段调用事件处理程序;如果是false时,表示在事件冒泡阶段调用事件处理程序。对于什么是事件捕获与事件冒泡,可以了解DOM的事件流。

    2.3.2 attachEvent事件监听方式

    eventTarget.attachEvent(eventNameWithOn, callback);
    

    该方法将指定的监听器注册到eventTarget(目标对象)上,当该对象触发指定的事件时,指定的回调函数就会被执行

    对于参数:

    • eventNameWithOn:事件类型字符串,注意要带on。eg.onclick、onmouseover
    • callback:事件处理函数,当目标触发事件时,回调函数被调用

    注:ie8及早期版本支持。

    2.3.3 注册事件兼容性的解决

    兼容性处理的原则:首先按照大多数浏览器,再处理特殊浏览器。

    function addEventListener(element, eventName, fn) {
        // 判断浏览器是否支持addEventListener方法
        if (element.addEventListener) {
            element.addEventListener(eventName, fn);
        } else if (element.attachEvent) {
            element.attachEvent('on' + eventName, fn);
        } else {
            // 相当于element.onclick = fn
            element['on' + eventName] = fn;
        }
    }
    

    3. 删除事件(解绑事件)

    3.1 传统事件方式

    eventTarget.onclick = null;
    

    3.2 方法监听注册方式

    // 1.
    eventTarget.removeEventListener(type, listener[, useCapture]);
    
    // 2.
    eventTarget.detachEvent(eventNameWithOn, callback);
    

    注:如果要删除事件,在绑定事件时不能将listener和callback写成匿名函数,要写成function fn() {}的形式,在调用时不需要加小括号。

    3.3 删除事件兼容性的解决

    function removeEventListener(element, eventName, fn) {
        // 判断当前浏览器是否支持removeEventListener方法
        if (element.removeEventListener) {
            element.removeEventListener(eventName, fn);
        } else if (element.detachEvent) {
            element.detachEvent('on' + eventName, fn);
        } else {
            element['on' + eventNAme] = null;
        }
    }
    
  • 相关阅读:
    NXOpen 各种参数(字符)类型转换
    NXOpen 重命名装配组件
    NXOpen 选择过滤
    【ASP.NET Core】一个默认的网站
    将博客搬至CSDN
    VS2017 .net core web项目 添加引用 报错 vs2017添加引用时报错未能正确加载“ReferenceManagerPackage”包
    负载均衡时,在State_Server模式中的Session共享问题(不讨论负载均衡的问题)
    修改linux文件权限命令:chmod
    Linux命令学习
    开闭原则
  • 原文地址:https://www.cnblogs.com/chiYiN-zZZ/p/14024600.html
Copyright © 2020-2023  润新知