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

 更新时间:2010年02月10日 23:21:16   作者:  
为了让我们的JavaScript驱动的页面对那些不能或者不想使用鼠标的用户也能很好的使用,我们对于像mouseover和click这样的事件做一些处理,同样的,对于非鼠标事件也同样的要我们的脚本执行。
测试的局限性
这一章我们打算寻找哪些事件可以用来仿真鼠标事件。注意这一系列测试不包括屏幕阅读器。因为我不能满足所有的条件,因此测试也有局限性。这个测试目标仅仅只是那些在图形界面下的浏览器中不使用鼠标的用户。
我假设这些测试一样可以用来在一些移动设备上。因为条件不足,所以也不能测试。很多时候在移动设备上表现总是不尽如人意。
总结
不幸的是,我们不能制定一个严格的鼠标事件和非鼠标的一对一的方案,因为非鼠标事件和鼠标事件有很多不同。所以下面的建议在大多数场合适用,但不是所有。
下面就是我的测试结果:
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

相关文章

  • js tab 选项卡

    js tab 选项卡

    选项卡的实现方法比较多,但原理基本上都差不多,隐藏与显示轮换
    2009-04-04
  • 微信小程序开发中的疑问解答汇总

    微信小程序开发中的疑问解答汇总

    这篇文章主要给大家总结了关于微信小程序开发中的各种疑问解答,文中将在微信小程序开发中可能遇到的问题都进行了整理和解答,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • 保证JavaScript和Asp、Php等后端程序间传值编码统一

    保证JavaScript和Asp、Php等后端程序间传值编码统一

    在WEB开发过程中,前后端要求数据编码一致的处理是经常会碰到的!
    2009-04-04
  • Bootstrap每天必学之折叠(Collapse)插件

    Bootstrap每天必学之折叠(Collapse)插件

    Bootstrap每天必学之折叠(Collapse)插件,折叠插件可以很容易地让页面区域折叠起来,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • JS实现微博发布功能

    JS实现微博发布功能

    这篇文章主要为大家详细介绍了JS实现微博发布功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • 前端开发基础javaScript的六大作用

    前端开发基础javaScript的六大作用

    这篇文章主要介绍了前端开发基础javaScript的六大作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  •  JavaScript 数据结构之散列表的创建(1)

     JavaScript 数据结构之散列表的创建(1)

    这篇文章主要介绍了 JavaScript 数据结构之散列表的创建,文章围绕主题相关内容展开详细的介绍,需要的小伙伴可以参考一下
    2022-04-04
  • JS触摸事件、手势事件详解

    JS触摸事件、手势事件详解

    本篇文章主要介绍了JS触摸事件、手势事件详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • IE的有条件注释判定IE版本详解(附实例代码)

    IE的有条件注释判定IE版本详解(附实例代码)

    IE的有条件注释是一种专有的(因此是非标准的)、对常规(X)HTML注释的Miscrosoft扩展。顾名思义,有条件注释使你能够根据条件(比如浏览器版本)显示代码块(不一定就是css,也可以是html代码,甚至是JavaScript代码)。
    2012-01-01
  • JS中如何实现点击a标签返回页面顶部的问题

    JS中如何实现点击a标签返回页面顶部的问题

    这篇文章主要介绍了JS中实现点击a标签返回页面顶部的问题,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-01-01

最新评论