1. HTML DOM支持两种事件流:冒泡型事件流和捕获型事件流。捕获型事件流首先发生,两种事件流都会触及DOM中的所有对象。DOM事件流在FireFox中得到广泛支持,即事件发生从document对象开始,也在document对象结束。
2. DOM事件流最独特的地方在于文本节点也会触发事件。如果单击HTML中的文本节点,也会触发DOM事件流。IE并不完全支持DOM标准,所以IE中的文本节点并不能触发节点。
3.在Firefox中使用JavaScript动态添加或移除事件处理监听函数必须使用addEventListener()、removeEventListener()函数。两个函数都有三个参数:事件名称、需要分配或移除的事件监听函数、是否处于DOM事件流的捕获阶段。第三个参数若为true说明事件监听函数处于DOM事件的捕获阶段,若为false说明事件监听函数处于DOM事件流的冒泡阶段。
4.在Firefox中动态添加事件监听函数,事件名称和IE有很大区别,Firefox中事件名称没有on作为前缀。
5. 在DOM事件流,首先执行捕获阶段事件。然后执行冒泡阶段事件。所以在执行removeEventListener()函数移除事件监听函数时,必须保证第三个参数与监听函数所处事件流阶段相等,才能正确移除事件监听函数。当事件监听函数处于事件流冒泡阶段,使用removeEventListener()尝试在捕获阶段删除事件监听函数不会产生异常,但是事件监听函数并不会被移除。
6. 事件源在IE中只能是HTML元素、document对象、window对象,而在Firefox中认为文本节点也可以触发事件
7.IE获取事件源:
var sender = event.srcElement;
Firefox获取事件源:
var sender = event.target;
8.IE获取按键字符代码:
var keyCode = event.keyCode;
Firefox获取按键字符代码:
var charCode = event.charCode;
var char = String.fromCharCode(charCode);
if(event.isChar)
{
var charCode = event.charCode;
}
9. IE阻止事件的默认行为:
event.returnValue = false;
Firefox阻止事件的默认行为:
event.preventDefault();
10. IE停止事件的多次响应:
window.event.cancelBubble = true;
Firefox停止事件的多次响应:
event.stopPropagation();
仅调用一次事件处理函数,事件流就会停止响应。
11. 鼠标点击事件的顺序:mousedown事件、mouseup事件、click事件、dbclick事件
12. 当移动鼠标从页面一个元素进入另一个元素中时,首先在移出的元素上触发mouseout事件,然后在两个元素上都触发mousemove事件,最后在鼠标进入的元素上触发mouseover事件。
13. 键盘事件的触发顺序:
按下某字符按钮:keydown事件、keypress事件、keyup事件;
按下某非字符按钮:keydown事件、keyup事件。
当一只按下某字符按键,会一直触发keydown/keypress事件,直到按键弹起才会触发keyup事件。当一直按下某非字符按键,只会不断的触发keydown事件。
14.