Dom操作知识点

2016-09-12  本文已影响0人  谢环志

DOM0 事件和DOM2级在事件监听使用方式上有什么区别?
答:
DOM0事件是直接将事件以内联的方式写在HTML标签内部,比如:
<a href="#" onclick="console.log('clicked');">click</a>
这种方式定义的事件看起来书写方面,但是存在缺点:

1.存在加载时间差的问题,若是用户在其中的js部分还未加载完成时去点击,则不会触发事件
2.这样的写法让HTML和js的耦合太过于紧密,代码维护不方便,并且一个事件只能对应一个元素,代码没有复用性
DOM2事件:有两个方法addEventListener()和removeEventListener()
它们都接收三个参数,包括事件类型、事件处理方法和布尔值,默认布尔为false

attachEvent与addEventListener的区别?
答:
1.接收的参数数量不同:前者只接收事件类型和事件处理方法两个参数,而后者还需要接收布尔值来判断是在捕获阶段调用事件处理程序还是在冒泡阶段处理,而对于attachEvent()而言,由于IE只支持事件冒泡,所以添加的程序会被添加到事件冒泡阶段;addEventListener的第一个参数指的是事件类型,而attachEvent则是接收事件处理程序名称。
2.兼容性不同,IE并不支持addEventListener(),所以才有了attachEvent和removeEvent两个方法来处理。
3.作用域不同,后者的作用域在元素本身,所以在其中添加this指的是触发事件本身,而前者的作用域在全局变量内运行,this则指向window。
4.执行顺序不同:后者按照事件的先后添加顺序执行,而前者的执行则是不可预料的

如何阻止事件冒泡? 如何阻止默认事件?
答:stopPropagation()取消事件进一步捕获和冒泡可以使用cancelable来查看默认时间是否可以被阻止,如果查询结果为true
,可以使用preventDefault()来阻止默认事件。

上一篇 下一篇

猜你喜欢

热点阅读