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


Posted in Javascript onJuly 27, 2017

我们使用的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

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

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

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

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

box.attachEvent('onclick',fn1)

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

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

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

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

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

Javascript 相关文章推荐
编辑浪子版表单验证类
May 12 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
Jan 13 Javascript
浅谈jquery选择器 :first与:first-child的区别
Nov 20 Javascript
jQuery实现模拟flash头像裁切上传功能示例
Dec 11 Javascript
浅谈Javascript中的Label语句
Dec 14 Javascript
Bootstrap 响应式实用工具实例详解
Mar 29 Javascript
微信小程序tabBar底部导航中文注解api详解
Aug 16 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
Dec 27 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
Feb 26 Javascript
webpack external模块的具体使用
Mar 10 Javascript
基于Vue实现可以拖拽的树形表格实例详解
Oct 18 Javascript
Node.js学习教程之Module模块
Sep 03 Javascript
Angular指令之restict匹配模式的详解
Jul 27 #Javascript
Angularjs的$http异步删除数据详解及实例
Jul 27 #Javascript
js学习总结之DOM2兼容处理this问题的解决方法
Jul 27 #Javascript
Angularjs的键盘事件的绑定
Jul 27 #Javascript
Angularjs 事件指令详细整理
Jul 27 #Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
Jul 27 #Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
Jul 27 #Javascript
You might like
15种PHP Encoder的比较
2007/04/17 PHP
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
PHP中文乱码解决方案
2015/03/05 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
Python中join函数简单代码示例
2018/01/09 Python
django中send_mail功能实现详解
2018/02/06 Python
Django教程笔记之中间件middleware详解
2018/08/01 Python
Django实现发送邮件功能
2019/07/18 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
兼职学生的自我评价
2013/11/24 职场文书
初三学习决心书
2014/03/11 职场文书
实习评语大全
2014/04/26 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS