JavaScript Event学习第二章 Event浏览器兼容性


Posted in Javascript onFebruary 07, 2010

在这里提出的事件,当他们发生在一个确定的HTML元素上的时候,他们的名字能够被大多数的浏览器所识别。也就是说,浏览器会查找你为这个HTML元素所注册的事件处理程序的脚本,而且会被立即执行。
      一开始只有为数很少的一些事件。这些事件在几乎所有的JavaScript浏览器都能运行,即使是那些非常古老的。需要注意的是那些早期的事件只能工作在链接或者表单上,有时候也能运行在整个窗口上,但是其他的大多数HTML元素不行。
      时代变迁,很多新的事件也给大家介绍过了。第四代浏览器和更高级的浏览器允许事件注册在任何的HTML元素上。
      所以你基本上可以在任何元素上绑定任何事件,虽然在<P>上绑定一个keydown没有什么意义。
      在这里查看完整的浏览器事件兼容性列表。

界面事件(Interface events)

      界面事件不是被用户动作触发的,而是被用户行为结果触发。
      用户在任何元素上单击都会触发一个click时间。当点击发生在有特殊含义的元素上的时候,额外的界面事件就会被触发。
      例如,当用户在一个链接上单击就触发了click时间。单击这个链接一个新的页面就会被装载,所以这个特殊的click事件导致了界面事件unload的触发。
      其他的界面事件还有resize,scroll和focus/blur。

鼠标事件(mouse events)

      从Netscape 2开始,所有的浏览器都注意到了这样两个事实。当鼠标划入一个链接区域,那么mouseover事件就触发了。当他点击了这个链接那么click事件触发。不久之后mouseout也被添加了进去,他会在鼠标离开链接区域的时候触发。因此传统的鼠标事件三合会(Traditional Triad)成立了。
      第三代的浏览器对于鼠标事件进行了一些扩充。dbclick添加了进来,click事件分割成了mousedown和mouseup:用户按下和弹起鼠标按键。最后跟踪鼠
标轨迹的mousemove也变成了可能
      在后面的章节会详细讲解鼠标事件(mouse event)。

表单事件(Form events)

      表单能够识别submit和reset事件,submit在用户提交表单的时候触发reset在重置表单的时候触发。其中submit事件是所有表单验证代码的核心。当用户提交表单的时候,就遍历一遍表单检查是否有不正确的数据。如果发现了一个错误,停止提交表单并向用户发出一个警告。
      表单还能在某一项得到或者失去焦点的时候识别focus和blur事件,还有键盘事件和click事件。可以查看其他的兼容性列表。
      一般情况下使用这些事件的时候要小心。当用户离开表单中的某一项的时候完全可以用onblur来验证数据,但是通常这都很烦人。用户在忙着填表单的时候不想看见任何弹出来的提示。

W3C事件(W3C events)

      在W3C的DOM 2 事件规范中  还定义了一些突发事件(Mutation events)。这些事件在文档的DOM结构发生变化的时候触发。最常见的一个就是DOMSubtreeModified事件,它会在DOM发生变化的时候触发。
      Mozilla将这个事件设置为subtreemodified。Mozilla也不支持其他的我们没有提到的w3c事件。

微软事件(Microsoft events)

      微软创造了一大堆事件。有一些是非常有趣的。
      当用户在任何时候单击鼠标右键的时候就会触发comtextmenu事件。这非常有用以致滥用。Mozilla也支持这个事件。
      当导入XML文件的时候,readystatechange事件就像一些load事件一样提供服务。当XML文档的readyState变成4的时候,文档就加载完毕了。(不要问我什么是readyState,他管用而且够用)
      让人惊奇的是在unload事件发生之前还有beforeunload事件。他设计的目的是用来取消关闭页面,但是确没人在乎。
      最后微软还发明了mouseenter和mouseleave事件,这两个几乎和mouseover合mouseout事件一样。在鼠标事件一章查看。
      当然以上事件只被IE支持。

Mozilla事件(Mozilla events)

      Mozilla,当然也有一大堆自己的事件。我还没有仔细的研究。

事件处理程序

      所有的事件无论何时触发都会被浏览器检测到。浏览器通常也会执行默认的程序,就像当用户点击一个链接的时候。但是有时候什么也不会发生。

      事件处理程序的重点在于你可以让其他事情发生。你可以在事件发生的时候让浏览器执行你的脚本。如果你这样写了那么无论何时只要事件发生那么你的脚本就会执行。如果这些脚本在符合逻辑的基础上能非常的有用,那么你的用户也会非常的愉快。

      为了确保你的脚本在事件触发的时候能够执行,你需要对HTML元素的确定的动作进行事件注册,就像下面这样:

       <a href="somewhere.html" onClick="alert('I\'ve been clicked!')">

      这样脚本里的alert('I\'ve been clicked!')就会在click事件发生的时候执行。这就注册了一个事件处理程序。

继续

      如果你要继续学习,那么请看下一章。

Javascript 相关文章推荐
javascript date格式化示例
Sep 25 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
Jan 13 Javascript
移动端js触摸事件详解
Sep 18 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
Dec 20 Javascript
Javascript中数组去重与拍平的方法示例
Feb 03 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
Feb 20 Javascript
js实现悬浮窗效果(支持拖动)
Mar 09 Javascript
js实现产品缩略图效果
Mar 10 Javascript
使用vue的transition完成滑动过渡的示例代码
Jun 25 Javascript
用Node提供静态文件服务的方法
Jul 06 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
Jul 09 Javascript
(开源)微信小程序+mqtt,esp8266温湿度读取
Apr 02 Javascript
JavaScript Event事件学习第一章 Event介绍
Feb 07 #Javascript
jQuery库与其他JS库冲突的解决办法
Feb 07 #Javascript
jQuery学习7 操作JavaScript对象和集合的函数
Feb 07 #Javascript
jQuery 学习6 操纵元素显示效果的函数
Feb 07 #Javascript
jQuery学习5 jQuery事件模型
Feb 07 #Javascript
jQuery学习4 浏览器的事件模型
Feb 07 #Javascript
jQuery学习3:操作元素属性和特性
Feb 07 #Javascript
You might like
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
php socket通信简单实现
2016/11/18 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
vue自定义组件实现双向绑定
2021/01/13 Vue.js
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
关于Python元祖,列表,字典,集合的比较
2017/01/06 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
python实现实时视频流播放代码实例
2020/01/11 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
高中毕业自我鉴定
2013/12/13 职场文书
开办大学饮食联盟创业计划书
2014/01/29 职场文书
机关作风建设心得体会
2014/10/22 职场文书
工作自我评价范文
2015/03/05 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
新兵入伍决心书
2015/09/22 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android