JS事件

事件模型

  • 内联模型
    在html中把事件处理函数作为属性执行js代码
  • 脚本模型
    在javascript中处理事件
  • DOM2模型

DOM2级事件”定义了两个方法,用于添加事件和删除事件处理程序的操作:addEventListener()和removeEventListener()。所有DOM节点中都包含这两个方法,并且它们都接受3个参数;事件名、函数、冒泡或捕获的布尔值(true表示捕获,false表示冒泡)。

IE事件处理程序,IE中实现了DOM中类似的两个方法:attachEvent()和detachEvent().这两个方法接受相关的两个参数:事件处理程序名称和事件处理程序函数。在IE8及IE8之间版本中只支持事件冒泡,所以通过attachEvent()添加的事件处理都会被添加到冒泡阶段。

DOM2级事件绑定
标准浏览器:curEle.addEventListener('click',function(){},false/true)
IE6-8:curEle.attachEvent('onclick',function(){})

DOM0级事件绑定
`curEle.οnclick=function(){};

参考链接
DOM0事件`

一个元素每次只能注册一个事件处理器,重复的事件会被覆盖

  • 表单元素常用事件

blur:失去焦点
focus:获取焦点
change:内容改变
select:被选中事件

阻止A标签的默认行为

  • 在HTML中阻止默认行为(常用)
    <a href='javascript:;'>;
  • 在js中
    link.onclick=function(){ return false;}//阻止页面行为 link.onclick=function(e){ e=e||window.event; 浏览器的兼容性 e.preventDefault?e.preventDefault():e.returnValue=false; }
    preventDefault:阻止事件的默认行为

事件流

事件流描述从页面中接收事件的顺序;两种模式:冒泡、捕获
事件冒泡:从里往外逐个触发(该标签开始)(IE事件流默认)
事件捕获:从外往里逐个触发(父级标签向内) (Netscape Communicator的事件流)
JS事件

事件兼容

  • 事件绑定:addEventListener与attachEvent

  • 事件移除:removeEventListener与detachEvent

  • 获取事件对象:e.target与 window.event.srcElement

  • 阻止冒泡:e.stopPropagation与window.event.cancelBubble

  • 阻止默认:e.preventDefault与window.event.returnValue