标准事件模型和IE事件模型
前言:在上一篇博客中总结了0级DOM事件模型和2级DOM事件模型,打铁趁热就在谈谈标准事件模型和IE事件模型的区别吧。
一. 标准事件模型
在JavaScript中把标准事件模型的执行分为三个阶段,即捕获阶段->目标阶段->冒泡阶段。在事件的传播过程中,事件先沿着document节点,一层一层的传播,知道遇到注册事件的目标节点,元素注册的事件函数开始运行,运行完毕则由沿着DOM树向上层传播,回到document节点则事件结束。事件流为:document->html->head->body->…->目标元素->…->body->head->document;
在标准事件模型中,事件的注册方式如下:
<button id="btn">点我</button>
<script type="text/javascript">var target = document.getElementById("btn");target.addEventListener('click',function(){alert("我是button");
}, true);</script>
- 与之对应的
removeEventListener()
用来移除事件; - 可以使用Event的event对象的
stopPropagation()
方法来阻止事件冒泡; - 以及使用
preventDefault()
函数阻止元素的默认事件的执行,比如<a>
标签的链接跳转,submit的默认表单提交等。
二. IE事件模型
一直觉得IE是个大麻烦,和其他的浏览器好多方法不兼容,当然在事件的处理这里也不一样了。
IE的事件机制没有捕获阶段,事件流是非标准的,只有目标阶段和冒泡阶段。
IE事件模型,事件注册方式:
<button id="btn">点我</button>
<script type="text/javascript">var target = document.getElementById("btn");target.attachEvent('onclick',function(){alert("我是button");
});</script>
- 与之对应的也有事件的移除函数 :
detachEvent()
; - 同样也有阻止事件冒泡的方法:首先获得event对象,
e = window.event
(可见IE中的event对象是个全局属性),然后设置event的cancelBubble属性为true即可e.cancelBubble = true;
; - 阻止默认事件发生:先也是获得event对象,设置returnValue属性为false即可,
e.returnValue =
false;
三. 区别补充
(1)由于IE不支持事件捕获,所以在注册函数中只有两个参数,类型和处理函数;
(2)标准事件模型中,注册函数时,事件类型前不加on,IE中要加on;
(3)attachEvent注册的函数作为全局调用函数,而不是文档元素的方法,因此this引用的是window对象;
(4)标准事件模型和IE事件模型都允许对同一元素,针对同一事件类型注册多个处理函数。但在标准事件模型中若注册同一函数,与之同名的函数都会被忽略,以第一个为准;在IE中,同一函数可以被注册多次,即发生次数等于注册次数。
标准事件模型和IE事件模型相关推荐
- 标准盒模型和 IE 盒模型
对于标准盒模型和 IE 盒模型你了解多少? 盒模型讲解 我们今天只会提到 标准盒模型,和 IE 盒模型,两种盒模型模式讲解.首先来看标准盒模型. 只要是盒模型都会有这四个属性 margin, bord ...
- Css盒模型有哪几部分,标准盒模型和IE盒模型有哪些区别
首先介绍Css的盒模型也就是标准盒模型(BOX Model) 包含了 内容(content) 内边距(padding) 边框(border) 外边框(margin) 这是大家经常用到的,也是现在的标准 ...
- 前端面试题 | 标准盒模型和IE盒模型的区别?
两者的区别在于content的不同,IE盒模型的content包含border,padding W3C盒子模型(又称之为标准盒模型)的范围包括margin.border.padding.content ...
- 详解OSI七层模型和TCP/IP模型
详解OSI七层模型 1. 详解OSI七层模型 1.1 详解每层结构 1.2 交换机和路由器的区别 1.3 集线器与路由器在功能上有什么不同 2. 详解TCP/IP模型 2.1 详解每层结构 2.2 O ...
- OSI 七层模型和TCP/IP模型及对应协议
OSI 七层模型和TCP/IP模型及对应协议图: 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于不同层的中继系统具有不同的名称. 一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部 ...
- 李奎元:说说那些征信模型(Z计分模型、巴萨利模型和A值模型)
李奎元称:根据企业信用管理理论,5C原则是指考察客户信用价值的5个因素,即品行(character).能力(capacity).资本(capital).担保品(collateral)和环境状况(con ...
- OSI 七层模型和TCP/IP模型及对应协议(详解)
OSI 七层模型和TCP/IP模型及对应协议(详解) 查看全文 http://www.taodudu.cc/news/show-6185847.html 相关文章: OSI7层网络模型协议精析 OSI ...
- OSI模型和TCP/IP模型
OSI模型 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念 ...
- 移除元素所有事件监听_DOM 事件模型或 DOM 事件机制
DOM 事件模型 DOM 的事件操作(监听和触发),都定义在EventTarget接口.所有节点对象都部署了这个接口,其他一些需要事件通信的浏览器内置对象(比如,XMLHttpRequest.Audi ...
最新文章
- Mysql:mysql 控制台程序的提示符 prompt 字符串设置
- 决策树ID3 C4.5 CART代码
- 逐一应对 检修三类型视频会议常见问题
- datagrid 什么时候结束编辑_孕吐到底什么时候结束
- java对外sdk提供接口_Android SDK封装,对外提供接口
- Spring的注解问题
- ZJOI2019 线段树
- 斐讯k2刷无线打印服务器,斐讯K2全版本刷机教程
- Java applet详解
- [整站源码]thinkphp家纺针织床上用品类网站模板+前后端源码
- 常见的压力面试题及面试技巧
- Linux上安装Matlab2020a
- 基于ZigBee的WPAN网络配置应用
- 【linux进阶4】apache的服务使用(图文巨详细解释apache的正向和反向代理)
- Oracle 19c VLDB and Partitioning Guide 第8章:Using Parallel Execution 读书笔记
- Microsoft Azure和WPF实现人脸检测
- WordPress博客系统搜索引擎优化seo全攻略方法
- actf-2019-onerepeater
- tesseract4.1遇到奇怪的0xc000001d应用程序无法运行
- 三十七 我在软件园的那些日子里
热门文章
- 大话设计模式-代理模式
- 每日案例(第四期):智慧金融08-10 | 知识图谱实践案例集(速读版)
- word邮件合并_使用邮件合并在Word 2003中创建邮件标签
- 超过十分之一的报告篇幅给语音,互联网女皇为何看好麦克风?
- 树莓派+神经计算棒2部署Openvino的human_pose_estimation_demo实例
- 7.计算比例工具工具类
- Oracle10表数据编辑器,Oracle ORACLE 快速批量导入文本数据到数据库(sqlldr工具)方法与分析 (Windows CMD 方式)...
- SpringBoot从入门到放弃之日志配置
- 1198:逆波兰表达式(递归)
- android 锁屏 广告,华为手机锁屏后总是出现广告该怎么办?-安卓手机屏幕解锁后总是有个广告...