标签:
JavaScript处理事件的基本机制:
有三种常用的绑定事件的方法:
在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所支持的事件,可以分为以下几类:
仅在表单元素中有效。
事件 | 说明 | 演示 |
---|---|---|
onchange | 当元素(select 、复选框 等)改变时执行脚本 | |
onsubmit | 当表单(form)被提交时执行脚本 | |
onreset | 当表单被重置时执行脚本 | |
onselect | 当元素被选取时执行脚本 | |
onblur | 当元素失去焦点时执行脚本 | |
onfocus | 当元素获得焦点时执行脚本 |
该属性可用于 img 元素:
事件 | 说明 |
---|---|
onabort | 当图像加载中断时执行脚本 |
在下列元素中无效:base、bdo、br、frame、frameset、head、html、iframe、meta、param、script、style 以及 title 元素。
事件 | 说明 | 演示 |
---|---|---|
onkeydown | 当键盘被按下时执行脚本 | |
onkeypress | 当键盘被按下后又松开时执行脚本 | |
onkeyup | 当键盘被松开时执行脚本 |
在下列元素中无效:base、bdo、br、frame、frameset、head、html、iframe、meta、param、script、style 以及 title 元素。
事件 | 说明 | 演示 |
---|---|---|
onclick | 当鼠标被单击时执行脚本 |
在这里单击鼠标
|
ondblclick | 当鼠标被双击时执行脚本 |
在这里双击鼠标
|
onmousedown | 当鼠标按钮被按下时执行脚本 |
在这里按下鼠标
|
onmousemove | 当鼠标指针移动时执行脚本 |
在这里移动鼠标
|
onmouseout | 当鼠标指针移出某元素时执行脚本 |
将鼠标移动到这里再离开
|
onmouseover | 当鼠标指针悬停于某元素之上时执行脚本 |
将鼠标移动到这里
|
onmouseup | 当鼠标按钮被松开时执行脚本 |
按下鼠标再松开
|
仅在 body 和 frameset 元素中有效。
事件 | 说明 |
---|---|
onload | 当网页被载入时执行脚本。 |
onunload | 当网页被关闭时执行脚本。 |
标签:
原文地址:http://www.cnblogs.com/lingc/p/4619231.html