javascript 事件监听
1、事件监听的定义
在Javascript中,浏览器一般分为两大类:
① 基于IE内核的浏览器(版本号小于9的IE浏览器)
② 基于W3C内核的浏览器(版本号大于9的IE浏览器、Firefox、Google等浏览器)
1)基本语法:基于IE内核浏览器
dom对象.attachEvent(type,callback,capture) :为元素绑定事件监听程序
参数说明:
type:绑定的事件类型,如onclick、onmouseover、onmouseout
callback:事件的处理程序,通常是一个匿名函数
capture:使用的浏览器模型,冒泡模型与捕获模型,默认IE8以下的浏览器只支持冒泡模型!
2)基本语法:基于W3C内核的事件监听
dom对象.addEventListener(type,callback) :为W3C内核浏览器绑定事件监听
参数说明:
type:绑定事件类型,不带’on’前缀,如click,mouseover,mouseout
callback:事件的处理程序,通常是一个匿名函数
3、总结事件监听的区别
IE内核的监听方式与W3C内核的监听方式:
①方式不同
IE内核的浏览器使用attachEvent进行绑定
W3C内核的浏览器使用addEventListener进行绑定
②参数不同
IE内核浏览器,其绑定方式一共有三个参数type,callback,capture(使用的浏览器模型)
W3C内核浏览器,其绑定方式一共有二个参数,type和callback
③type参数不同
IE内核的浏览器,type是需要添加’on’前缀的,如onclick
W3C内核浏览器,type是不需要添加’on’前缀的,如click
④触发顺序不同
IE内核的浏览器,其事件监听是先绑定后触发,后绑定的先触发
W3C内核的浏览器,其事件监听是先绑定先触发,后绑定的后触发
但这种写法一次只能放一个函数在上面,写成逗号隔开的也当成一个函数的函数体。像另一楼"三间房” 说的那样,用 attachEvent 可以将多个 event handler (监听函数) 添加到事件监听的队列中去,各自互不相干。
“ 就表示"你正在监听 click 事件", 我正在监听这个事件??? 给某个元素附上事件,就是在监听了?? 那监听器是怎么回事 它在哪? 监听到事件发生之后 它是怎么工作的?把监听到的信息传给谁呢?不会监听完了就没什么动作了吧?
事件发生时调用你的函数的这个工作过程是由浏览器来解决的。也就是控制器是浏览器,它捕获鼠标点击事件,然后通知监听列表中的 event handler。一般我们就把你的 onclick 函数叫事件监听器。你看 三间房 说的,人家有这个方法叫 addEventListener,这个方法名就暗示你的函数也就是一个 event listener。
这么做最大的好处就是支持事件的多次监听,避免事件冲突,同时可以实现javascript与HTML的分离,符合无侵入编程的思想。
这么做跟后台没什么关系。
这个就叫做按钮的点击事件监听
比如如下代码
按钮元素 有一个onclick事件(就是点击事件)
当点击了 执行函数DoClick
这就是上面的说的监听他的点击事件,并进行操作处理!(至于后台,比如说我点击了按钮,向后台提交一些数据如用户名 密码等)
jsp/html代码:<input type="button" id="but" value="测试按钮" onclick="DoClick()">
javascript代码
<javascript>
function DoClick()
{
alert('点击了按钮!希望对你有帮助!');
}
</javascript>
哦 监听应该是一个动作 那这个动作是谁发出的?是浏览器吗 如果是 听到了以后它把监听到的内容传给谁 并执行听到的信息呢??
还有这个监听应该有个程序吧? 是每个文档元素都有吗?还是在HTML加载的过程中 发现有事件句柄就给加上一个监听器呢???
这些元素自带的 有些东西是封装好了 至于底层 可以不用求考虑
只要你想加 基本都能加上