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用户自定义类的类名称的代码
Mar 08 Javascript
dwr spring的集成实现代码
Mar 22 Javascript
JavaScript 自动完成脚本整理(33个)
Oct 20 Javascript
jQuery中 noConflict() 方法使用
Apr 25 Javascript
js保留小数点后几位的写法
Jan 03 Javascript
原生js实现图片层叠轮播切换效果
Feb 02 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
Apr 29 Javascript
关于Vue.js一些问题和思考学习笔记(1)
Dec 02 Javascript
js实现PC端根据IP定位当前城市地理位置
Feb 22 Javascript
React通过父组件传递类名给子组件的实现方法
Nov 13 Javascript
浅谈Webpack多页应用HMR卡住问题
Apr 24 Javascript
redux处理异步action解决方案
Mar 22 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 图片上传实现代码 带详细注释
2010/04/29 PHP
php eval函数用法总结
2012/10/31 PHP
php文件缓存类汇总
2014/11/21 PHP
php文件夹的创建与删除方法
2015/01/24 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
Prototype中dom对象方法汇总
2008/09/17 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
JS操作CSS随机改变网页背景实现思路
2014/03/10 Javascript
JavaSript中变量的作用域闭包的深入理解
2014/05/12 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
Python内置random模块生成随机数的方法
2019/05/31 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
化工专业应届生求职信
2013/11/08 职场文书
制药工程专业个人求职自荐信
2014/01/25 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
执法作风整顿剖析材料
2014/10/11 职场文书
春秋淹城导游词
2015/02/11 职场文书
小学生手册家长意见
2015/06/03 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python