目录
描述w3c事件流
什么叫事件流?(事件模型、事件机制)。
多个节点对象对同一个事件的响应顺序,被称作为事件流。
W3C 事件流:
- 执行捕获阶段:网景浏览器提出,事件由最不精确的对象(document)依次执行到最精确的目标元素(target)。
- 执行目标事件。
- 执行冒泡阶段:IE浏览器提出,事件由最精确的目标元素(target) 依次执行到 最不精确的对象(document)。
- 事件根据自身是冒泡还是捕获,决定自身在哪一个阶段执行。
window.onload 和 DOMContentLoaded 的对比
-
window 的 onload 事件:
当DOM
节点加载完成 并且所有的资源也加载完成以后才能触发。 -
DOMContentLoaded
事件:
当DOM节点加载完成以后就执行 不再等待资源。
是DOM2
级事件 必须事先处理函数绑定。
分别谈一谈 DOM0 和 DOM2 绑定事件
DOM0
动态绑定:把匿名函数直接赋值给 DOM对象的事件属性,当事件触发就会执行匿名函数。
特点:
- 同一个事件对同一个元素只能绑定1次,否则会覆盖。
- 只能执行冒泡。
取消事件:
直接把事件属性的值赋值为null即可。
DOM2
事件处理函数:w3c提供了一个事件处理函数addEventListener()
专门用来处理事件。
特点:
- 可以给同一个元素绑定同一个事件多次。
- 可以控制冒泡和捕获。
删除事件:
使用removeEventListener()
方法。
使用场景:
- 对同一个元素绑定同一个事件多次 不希望被覆盖。
- 可以控制捕获或者冒泡。
- DOM2级事件 只能通过事件处理函数绑定(
DOMContentLoaded
)。
|| 和 && 操作符的返回值?
- || 和 && 首先会对第一个操作数执行条件判断,如果其不是布尔值就先进行 Boolean 强制类型转换,然后再执行条件判断。
- 对于 || 来说,如果条件判断结果为 true 就返回第一个操作数的值,如果为 false 就返回第二个操作数的值。
- && 则相反,如果条件判断结果为 true 就返回第二个操作数的值,如果为 false 就返回第一个操作数的值。
- || 和 && 返回它们其中一个操作数的值,而非条件判断的结果。
写一个通用的事件侦听器函数
function (element, type, handler, method) {
//DOM2级事件处理程序,false表示在冒泡阶段处理事件程序
if (element.addEventListener) {
element.addEventListener(type, handler, method || false);
}
//IE事件处理程序
else if (element.attachEvent) {
element.attachEvent("on" + type, handler);
}
//DOM0级
else {
element["on" + type] = handler;
}
}