JavaScript Event学习第十章 一些可替换的事件对


Posted in Javascript onFebruary 10, 2010

测试的局限性
这一章我们打算寻找哪些事件可以用来仿真鼠标事件。注意这一系列测试不包括屏幕阅读器。因为我不能满足所有的条件,因此测试也有局限性。这个测试目标仅仅只是那些在图形界面下的浏览器中不使用鼠标的用户。
我假设这些测试一样可以用来在一些移动设备上。因为条件不足,所以也不能测试。很多时候在移动设备上表现总是不尽如人意。
总结
不幸的是,我们不能制定一个严格的鼠标事件和非鼠标的一对一的方案,因为非鼠标事件和鼠标事件有很多不同。所以下面的建议在大多数场合适用,但不是所有。
下面就是我的测试结果:
1、mouseover:focus
2、mouseout:blur
3、click:不需要匹配
4、dblclick:不知道
5、mousedown:keydown(最不坏的选择)
6、mouseup:keyup(最不坏的选择)
7、mousemove:没有鼠标不可能

如果页面一定需要完美的支持非鼠标用户,那么我们可选择的能应用事件处理程序的元素就非常少。实际上就回到了Netscape 3时代,那时候事件处理程序只在链接和表单里才有用。
更多的研究还是有必要的。
准备
在大多数的浏览器中用户可以通过Tab键来飘过整个页面。当他们这样做的时候,焦点就会跳到下一个链接或者表单上。这在IE和Mozilla都可以运作。在Safari里面你需要按F1然后才能激活键盘快捷键。
Opera用户是另外一个系统的。链接上的跳转需要按Ctrl+方向键。虽然是不同的组合,但是我还是会称其为“Tabbing”。
例子:传统的mouseover
如何做到呢?首先也是最重要的为mouseover和mouseout的添加两个事件:

imgs[i].onmouseover = imgs[i].onfocus = mouseGoesOver; 
imgs[i].onmouseout = imgs[i].onblur = mouseGoesOut;

现在当用户鼠标经过或者tab经过时,函数都会被执行。
然而,添加一些事件还是不够的。我原始的工作室直接在图像上设置onmouseover和mouseout。不幸的是tab一个图像基本上不可能:tab只对链接和表单有用。所以我需要对把事件添加的图像的父节点上:链接。
这个简单的例子不会因为我们的重新注册改变,但更复杂的脚本可能会无法界定访问活动,例如,一个div。
为了保证完美的可用性,我们可以只定义链接和表单的事件,就像我们再1998年时候那样干的。虽然网上的大部分事件还是定义在链接上,不过一个复杂的比如文本编辑的脚本对于非鼠标用户就不可用,因为我们要在上面click。

翻译地址:http://www.quirksmode.org/js/events_pairs.html

作者:北玉(tw:@rehawk)
文章出处:beiyu.cnblogs.com

Javascript 相关文章推荐
理解Javascript_11_constructor实现原理
Oct 18 Javascript
简单的jquery左侧导航栏和页面选中效果
Aug 21 Javascript
基于JavaScript短信验证码如何实现
Jan 24 Javascript
vue.js入门教程之基础语法小结
Sep 01 Javascript
jquery实现全选、不选、反选的两种方法
Sep 06 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
Sep 28 Javascript
前端编码规范(3)JavaScript 开发规范
Jan 21 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
Feb 22 Javascript
JavaScript实现的浏览器下载文件的方法
Aug 09 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
Aug 25 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
Jun 03 Javascript
100行代码实现vue表单校验功能(小白自编)
Nov 19 Javascript
jQuery插件 tabBox实现代码
Feb 09 #Javascript
基于Jquery的简单&简陋Tabs插件代码
Feb 09 #Javascript
JQUERY操作JSON实例代码
Feb 09 #Javascript
JQuery 获得绝对,相对位置的坐标方法
Feb 09 #Javascript
ExtJs 3.1 XmlTreeLoader Example Error
Feb 09 #Javascript
Javascript 获取链接(url)参数的方法[正则与截取字符串]
Feb 09 #Javascript
一个XML格式数据转换为图表的例子
Feb 09 #Javascript
You might like
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
php替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
php Calender(日历)代码分享
2014/01/03 PHP
PHPThumb图片处理实例
2014/05/03 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
php+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
js对象的比较
2011/02/26 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
WebStorm中如何将自己的代码上传到github示例详解
2020/10/28 Javascript
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
详解python变量与数据类型
2020/08/25 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
网站域名和主机:Domain.com
2019/04/01 全球购物
技术学校毕业生求职信分享
2013/12/02 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电