码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript事件

时间:2015-07-03 18:40:38      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

JavaScript处理事件的基本机制:

  1. 对DOM元素绑定事件处理函数;
  2. 监听用户的操作;
  3. 当用户在相应的DOM元素上进行与绑定事件对应的操作时,事件处理函数做出响应;
  4. 将处理结果更新到 HTML 文档。

有三种常用的绑定事件的方法:

在DOM元素中直接绑定;

原生函数:<input  onclick="alert(‘谢谢支持‘)"  type="button"  value="点击我,弹出警告框" />
自定义函数:<input  onclick="myAlert()"  type="button"  value="点击我,弹出警告框" />
<script type="text/javascript">
function myAlert(){
    alert("谢谢支持");
}
</script>

 

在JavaScript代码中绑定;

<input  id="demo"  type="button"  value="点击我,显示 type 属性" />
<script type="text/javascript">
document.getElementById("demo").onclick=function(){
    alert(this.getAttribute("type"));  //  this 指当前发生事件的HTML元素,这里是<div>标签
}
</script>

绑定事件监听函数

绑定事件的另一种方法是用 addEventListener() 或 attachEvent() 来绑定事件监听函数。

addEventListener()函数语法:
elementObject.addEventListener(eventName,handle,useCapture);

参数说明
elementObject DOM对象(即DOM元素)。
eventName 事件名称。注意,这里的事件名称没有“ on ”,如鼠标单击事件 click ,鼠标双击事件 doubleclick ,鼠标移入事件 mouseover,鼠标移出事件 mouseout 等。
handle 事件句柄函数,即用来处理事件的函数。
useCapture Boolean类型,是否使用捕获,一般用false 。这里涉及到JavaScript事件流的概念,后续章节将会详细讲解。


attachEvent()函数语法:
elementObject.attachEvent(eventName,handle);

参数说明
elementObject DOM对象(即DOM元素)。
eventName 事件名称。注意,与addEventListener()不同,这里的事件名称有“ on ”,如鼠标单击事件 onclick ,鼠标双击事件 ondoubleclick ,鼠标移入事件 onmouseover,鼠标移出事件 onmouseout 等。
handle 事件句柄函数,即用来处理事件的函数。


注意:事件句柄函数是指“ 函数名 ”,不能带小括号。

addEventListener()是标准的绑定事件监听函数的方法,是W3C所支持的,Chrome、FireFox、Opera、Safari、IE9.0及其以上版本都支持该函数;但是,IE8.0及其以下版本不支持该方法,它使用attachEvent()来绑定事件监听函数。所以,这种绑定事件的方法必须要处理浏览器兼容问题。

下面绑定事件的代码,进行了兼容性处理,能够被所有浏览器支持:

function addEvent(obj,type,handle){
    try{  // Chrome、FireFox、Opera、Safari、IE9.0及其以上版本
        obj.addEventListener(type,handle,false);
    }catch(e){
        try{  // IE8.0及其以下版本
            obj.attachEvent(‘on‘ + type,handle);
        }catch(e){  // 早期浏览器
            obj[‘on‘ + type] = handle;
        }
    }
}

这里使用 try{ ... } catch(e){ ... } 代替 if ... else... 语句,避免浏览器出现错误提示。

例如,为一个 id="demo" 的按钮绑定事件,鼠标单击时弹出警告框:

addEvent(document.getElementById("demo"),"click",myAlert);
function myAlert(){
    alert("又是一个警告框");
}

JavaScript所支持的事件,可以分为以下几类:

  • 窗口事件 (Window Events)
  • 表单元素事件 (Form Element Events)
  • 图像事件 (Image Events)
  • 键盘事件 (Keyboard Events)
  • 鼠标事件 (Mouse Events)

表单元素事件 (Form Element Events)

仅在表单元素中有效。

事件说明演示
onchange 当元素(select 、复选框 等)改变时执行脚本
onsubmit 当表单(form)被提交时执行脚本
 
onreset 当表单被重置时执行脚本

 
onselect 当元素被选取时执行脚本
onblur 当元素失去焦点时执行脚本
onfocus 当元素获得焦点时执行脚本

图像事件 (Image Events)

该属性可用于 img 元素:

事件说明
onabort 当图像加载中断时执行脚本

键盘事件 (Keyboard Events)

在下列元素中无效:base、bdo、br、frame、frameset、head、html、iframe、meta、param、script、style 以及 title 元素。

事件说明演示
onkeydown 当键盘被按下时执行脚本
onkeypress 当键盘被按下后又松开时执行脚本
onkeyup 当键盘被松开时执行脚本

鼠标事件 (Mouse Events)

在下列元素中无效:base、bdo、br、frame、frameset、head、html、iframe、meta、param、script、style 以及 title 元素。

 

事件说明演示
onclick 当鼠标被单击时执行脚本
在这里单击鼠标
ondblclick 当鼠标被双击时执行脚本
在这里双击鼠标
onmousedown 当鼠标按钮被按下时执行脚本
在这里按下鼠标
onmousemove 当鼠标指针移动时执行脚本
在这里移动鼠标
onmouseout 当鼠标指针移出某元素时执行脚本
将鼠标移动到这里再离开
onmouseover 当鼠标指针悬停于某元素之上时执行脚本
将鼠标移动到这里
onmouseup 当鼠标按钮被松开时执行脚本
按下鼠标再松开

 

窗口事件 (Window Events)

仅在 body 和 frameset 元素中有效。

事件说明
onload 当网页被载入时执行脚本。
onunload 当网页被关闭时执行脚本。

JavaScript事件

标签:

原文地址:http://www.cnblogs.com/lingc/p/4619231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!