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 相关文章推荐
在线编辑器的实现原理(兼容IE和FireFox)
Mar 09 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
Dec 19 Javascript
JS不能跨域借助jquery获取IP地址的方法
Aug 20 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
Feb 27 Javascript
jQuery标签编辑插件Tagit使用指南
Apr 21 Javascript
总结十个Angular.js由浅入深的面试问题
Aug 26 Javascript
详细总结Javascript中的焦点管理
Sep 17 Javascript
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
Aug 23 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
Aug 25 Javascript
深入了解JavaScript 的 WebAssembly
Jun 15 Javascript
layui table单元格事件修改值的方法
Sep 24 Javascript
详解如何在JS代码中消灭for循环
Dec 11 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开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
带密匙的php加密解密示例分享
2014/01/29 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
nodeJS微信分享
2017/12/20 NodeJs
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
JS实现分页导航效果
2020/02/19 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
让python json encode datetime类型
2010/12/28 Python
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
python自然语言编码转换模块codecs介绍
2015/04/08 Python
python之super的使用小结
2018/08/13 Python
Python实现App自动签到领取积分功能
2018/09/29 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
Django数据库迁移常见使用方法
2020/11/12 Python
为世界各地的女性设计和生产时尚服装:ROMWE
2016/09/17 全球购物
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
化学相关工作求职信
2013/10/02 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
苏州园林导游词
2015/02/03 职场文书
法定代表人身份证明书
2015/06/18 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
Django模型层实现多表关系创建和多表操作
2021/07/21 Python