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优化一站式服务
中国移动官方网站首页入口 中国移动官网网页登录
如何在建站主机中优化服务器配置?
黑客如何利用漏洞与弱口令入侵网站服务器?

