前端面试题之DOM事件
来源:互联网 发布:手机淘宝怎么求购 编辑:程序博客网 时间:2024/06/09 22:22
DOM事件类
本文主要介绍面试过程中关于DOM事件可能会问到的问题。以供参考。
1. DOM事件级别
DOM0级事件
DOM0 级时间分两种,一是直接在标签内直接添加执行语句,二是定义执行函数。
<input type="text" id="test"><input type="button" value="button" onclick="alert(document.getElementById('test').value)"><script> document.getElementById('button').onclick=function(){ alert(document.getElementById('test').value); }</script>
DOM2 级事件
第一个参数:事件名称
第二个参数:执行函数
第三个参数:指定冒泡还是捕获,默认是false,冒泡。
element.addEventListener('click',function(){},false)
DOM3 级事件
同DOM2级一样,只不过添加了更多的事件类型,鼠标事件、键盘事件。
element.addEventListener('keyup',function(){},false)
关于DOM事件级别,只要能答出来就行,不会问太多的问题,或者是出题目去做。
2. DOM事件类型
事件类型分两种:事件捕获、事件冒泡。 事件捕获就是由上往下,从事件发生的顶点开始,逐级往下查找,一直到目标元素。 事件冒泡就是由下往上,从具体的目标节点元素触发,逐级向上传递,直到根节点。具体过程参考下图理解:
3. DOM事件流
事件流简单说就是,浏览器在当前页面与用户交互过程中时间的传递过程。DOM完整的事件流包括三个阶段:事件捕获阶段、目标阶段和事件冒泡阶段。事件通过捕获到达目标元素,这个时候就是目标阶段。从目标节点元素将事件上传到根节点的过程就是第三个阶段,冒泡阶段。
对应上图自己体会体会。
4. 描述DOM 事件捕获的具体流程
很多人,包括我之前都认为,第一个接收到事件的对象是document,其实不是,第一个对象是window对象。之后才是document对象。我们通过代码来演示整个捕获的流程。
<div id="dom"> <style media="screen"> #dom{ width: 300px; height: 100px; background: red; color: #fff; text-align: center; line-height: 100px; } </style> 目标元素 </div> <script type="text/javascript"> var dom = document.getElementById('dom'); dom.addEventListener('click', function (e) { console.log('this div'); }, true); window.addEventListener('click', function (e) { console.log('this window'); }, true); document.addEventListener('click', function (e{ console.log('this document'); }, true); document.documentElement.addEventListener('click', function (e) { console.log('this html'); }, true); document.body.addEventListener('click',function (e) { console.log('this body'); }, true); </script>
5. Event对象的常见应用
Event 对象的方法有很多,给大家推荐一个文章去参考,javaScript事件(四)event的公共成员(属性和方法),这里就介绍几种,比较有代表性的。
event.preventDefault() //阻止标签的默认行为,比如说 a 标签, 可以阻止它的默认跳转行为。
event.stopPropagation() //阻止冒泡。有些情况就不需要冒泡时间,比如说,父子元素分别绑定事件,如果不给子元素设置阻止冒泡,那么在子元素响应事件时,父元素也会响应这个事件,这时候就需要阻止冒泡。
event.stopImmediatePropagation() //设置事件响应优先级,同一个元素绑定了两个事件的话,在需要设定执行顺序是就需要这个方法。
更多的Event对象属性方法也可以参考W3CSchool 的 Event 对象 讲解。
6. 自定义事件
这里介绍的比较简单,具体的详细自定义事件相关知识可以自行搜索了解,好文章也有很多,就不一一列举了。
var eve = new Event('test'); //通过new Event 创建事件 dom.addEventListener('test', function () { //注册事件 console.log('test dispatch'); }); setTimeout(function () { dom.dispatchEvent(eve); //触发事件 }, 1000);
除了通过上述方式,还可以通过 customEvent(), 除了事件名,还可以添加一个Object自定义参数。 用法与上一种方法是相同的。
本文就介绍这么多,希望能对你有所帮助。
- 前端面试题之DOM事件
- 前端面试题 之 JavaScript
- Web前端之面试题
- 前端面试题之汇总
- 前端面试题之布局
- 前端开发面试题之 JavaScript
- 前端开发面试题之 HTML
- 前端开发面试题之 JavaScript
- 前端开发面试题之综合篇
- 前端面试题之---HTML篇
- 前端开发面试题之 JavaScript
- 前端面试题之数组去重
- 前端之HTML面试题集锦
- 前端之HTML相关面试题。
- 前端进阶之路(面试题)
- 前端面试题之CSS盒模型
- 前端面试题之HTTP协议类
- 面试题-冒泡与捕获、事件委托、ie事件和dom模型事件、鼠标事件
- exception模块
- IO
- Vuejs技术栈从CLI到打包上线实战全解析
- [RK3288][Android6.0] Camera HAL流程小结
- 仿真软件OriginPro之《文献图片取点方法》
- 前端面试题之DOM事件
- 关于oracle字段精度和javaType及jdbcType
- 浅析前端开发中的 MVC/MVP/MVVM 模式
- 两个阿里云linux服务器之间传文件
- 实验3-栈和队列——表达式求值(2133)
- 如何通过 Vue+Webpack 来做通用的前端组件化架构设计
- Bootstrap组件福利篇:几款好用的组件推荐
- Opencv 配置
- PHP秒杀系统 高并发高性能的极致挑战