javascript事件冒泡和捕获

时间:2023-02-01 14:53:58

首先理解一下事件:

  这里又引出了两个概念

      1: 消息

      2: 事件响应

  当浏览器页面文档的DOM元素发生事件时,将向浏览器发出一个消息(message),这个消息以Event对象的形式生成并沿着DOM树向上传播.浏览器事件的种类很多,包括鼠标点击,鼠标移动,键盘,失去与获得焦点等等.在Javascript中,这些事件都以对应的属性来表示,将一个闭包(我们知道其实函数就是闭包)赋给这个属性,或者注册到这个属性,这个闭包就成为这个事件的处理函数,也成为事件句柄.闭包的执行过程被称为事件响应.

那么我们继续看

<script>
document.getElementsByTagName("input")[0].onclick=function(){
            console.log(arguments.length); // Firefox为1 , IE为0
            console.log(typeof window.event); //Firefox 为undefined , IE为object
        }
</script>
<input type="button" value="点击" />

Netscape和Microsoft对Event对象处理是不同的. 在IE下event对象会作为window下的属性存在,而Netscape下event对象是被作为事件接收函数(闭包)的参数传递的.

解决兼容Netscape和Microsoft的event对象兼容:

<script>
          document.getElementsByTagName("input")[0].onclick=function(event){
			var event=event || window.event;	
		}
</script>