js学习总结之dom2级事件基础知识详解

发布时间 - 2026-01-11 02:32:27    点击率:

我们使用的DOM2事件绑定,其实是让box通过原型链一直找到EventTarget这个内置类原型上的addEventListener方法实现的。

DOM0级事件绑定:只能给一个元素的某一个行为绑定一次方法,第二次绑定的会把前面的覆盖掉。

DOM2:可以给某一个元素的同一个行为绑定多个不同的方法

box.addEventListener('click',function(e){
      console.log(1)
    },false)
    box.addEventListener('click',function(e){
      console.log(2)
    },false) // 输出1 2

DOM2:DOM0中的行为类型,我们用DOM2一样可以绑定,而且DOM2中还提供了一些DOM0没有的行为类型->DOMContentLoaded:当页面中的DOM结构(HTML结构加载完成)触发的行为

box.addEventListener('DOMContentLoaded',function(e){
      
    },false)
window.onload = function(){}

//当页面中的所有资源都加载完成(图片、HTML结构、音视频...)才会执行后面的函数;并且在一个页面中只能用一次,后面在写会把前面的覆盖掉;->因为他是采用DOM0事件绑定,所以只能绑定一次
     $(document).ready(function(){})//->$(function(){})
    /*
      只要页面中的HTML结构加载完成就会执行对应的函数;并且在同一个页面中可以出现多次。因此这个是采用DOM2事件的绑定,绑定的行为是DOMContentLoaded
    */

DOM2级添加和移除事件细节

function fn1(e){
      console.log(this);
    }
    //添加事件
    box.addEventListener('click',fn1,false);
    //移除事件
    box.removeEventListener('click',fn1,false);

注意:移除的时候需要保证三个参数:行为、方法、哪个阶段发生的   三个参数必须一致 ->DOM2在绑定的时候,我们一般都给他绑定的是实名函数

只能给某个元素的同一个行为绑定多个“不同”的方法(如果方法相同了,只能留一个)

当行为触发,会按照绑定的先后顺序依次把绑定的方法执行;执行的this是当前被绑定事件的元素本身

function fn1(){
      console.log(1);
    }
    //添加事件
    box.addEventListener('click',fn1,false);
    box.addEventListener('click',fn1,false);//只输出一个1

上面涉及一个概念:事件池(用来存储当前元素行为绑定的方法的,浏览器自带的机制) 如下图所示

 但是在IE6-8浏览器中,不支持addEventListener,如果想实现DOM2事件绑定只能用attachEvent/detachEvent

它只有两个参数,不能像addEventListener那样控制在哪个阶段发生,默认只能在冒泡阶段发生,同时行为需要添加on(和DOM0特别的类似)

box.attachEvent('onclick',fn1)

注意:和标准浏览器的事件池机制对比:

1、顺序问题:执行的时候顺序是混乱的,标准浏览器是按照绑定顺序依次执行的

2、重复问题:ie6-8可以给同一个元素的同一个行为绑定多个相同的方法

3、this问题:ie6-8中当方法执行的时候,方法中的this不是当前的元素box而是window

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# dom2  # 事件  # JavaScript中DOM操作常用事件总结  # JavaScript DOMContentLoaded事件案例详解  # JavaScript WebAPI、DOM、事件和操作元素实例详解  # 详解用js代码触发dom事件的实现方案  # JS前端知识点总结之页面加载事件  # 数组操作  # DOM节点操作  # 循环和分支  # JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法  # js中DOM事件绑定分析  # JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发  # JS实现动态添加DOM节点和事件的方法示例  # JavaScript DOM操作与事件处理方法  # 绑定  # 多个  # 移除  # 加载  # 会把  # 能给  # 只能用  # 的是  # 就会  # 他是  # 给他  # 才会  # 不支持  # 所示  # 所有资源  # 自带  # 音视频  # 它只  # 能像  # 大家多多 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在不使用负向后查找的情况下匹配特定条件前的换行符  PHP 500报错的快速解决方法  实例解析angularjs的filter过滤器  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Java遍历集合的三种方式  如何用AI帮你把自己的生活经历写成一个有趣的故事?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  如何快速登录WAP自助建站平台?  深圳网站制作培训,深圳哪些招聘网站比较好?  如何彻底卸载建站之星软件?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  Laravel PHP版本要求一览_Laravel各版本环境要求对照  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  如何在IIS中新建站点并解决端口绑定冲突?  打造顶配客厅影院,这份100寸电视推荐名单请查收  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  bootstrap日历插件datetimepicker使用方法  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  Python文本处理实践_日志清洗解析【指导】  Laravel怎么使用Intervention Image库处理图片上传和缩放  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  如何挑选高效建站主机与优质域名?  简单实现Android验证码  制作电商网页,电商供应链怎么做?  如何快速查询网站的真实建站时间?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  LinuxCD持续部署教程_自动发布与回滚机制  如何有效防御Web建站篡改攻击?  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  免费视频制作网站,更新又快又好的免费电影网站?  浅述节点的创建及常见功能的实现  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  Laravel怎么实现验证码(Captcha)功能  网站制作大概多少钱一个,做一个平台网站大概多少钱?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何基于云服务器快速搭建个人网站?  香港服务器租用费用高吗?如何避免常见误区?  如何快速生成可下载的建站源码工具?  Laravel如何升级到最新版本?(升级指南和步骤)  高端智能建站公司优选:品牌定制与SEO优化一站式服务  中国移动官方网站首页入口 中国移动官网网页登录  如何在建站主机中优化服务器配置?  黑客如何利用漏洞与弱口令入侵网站服务器?