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 相关文章推荐
getElementById在任意一款浏览器中都可以用吗的疑问回复
May 13 Javascript
让回调函数 showResponse 也带上参数的代码
Aug 13 Javascript
javascript 实用的文字链提示框效果
Jun 30 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
Dec 11 Javascript
JavaScript实现16进制颜色值转RGB的方法
Feb 09 Javascript
JavaScript实现找质数代码分享
Mar 24 Javascript
微信支付如何实现内置浏览器的H5页面支付
Sep 25 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
Jun 30 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
Jul 14 Javascript
AngularJS过滤器详解及示例代码
Aug 16 Javascript
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
Jun 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经典的给图片加水印程序
2006/12/06 PHP
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
2015/12/10 PHP
了解一点js的Eval函数
2012/07/26 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
如何使用 vue-cli 创建模板项目
2020/11/19 Vue.js
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
Python Queue模块详解
2014/11/30 Python
Python解析json文件相关知识学习
2016/03/01 Python
python用for循环求和的方法总结
2019/07/08 Python
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
如何写毕业求职自荐信
2013/11/06 职场文书
打架检讨书800字
2014/01/10 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
美德好少年事迹材料
2014/01/19 职场文书
公司委托书怎么写
2014/08/02 职场文书
软环境建设心得体会
2014/09/09 职场文书
先进班集体申报材料
2014/12/26 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL
javascript的setTimeout()使用方法总结
2021/11/20 Javascript