OnClick 和 OnKeyPress 符合标准
我正在开发一个大型网站(1600 多个页面),需要升级才能通过标准合规性。因此,对于每个 OnClick,标准都必须有一个 OnKeyPress 处理程序,以便不使用鼠标的人仍然可以访问内容。
有些标签有一个 onclick javascript 处理程序。 EG:
<a onclick="doSumat();">
以下是跨浏览器、有效的 javascript:
<a onclick="doSumat();" onkeypress="this.onclick();" >
它在所有浏览器中都能可靠地工作吗?对于使用屏幕阅读器的人来说,结果是否与单击鼠标相同?
I am working on a large website (1600+ pages) that needs upgrading to pass standards compliance. As a result, for every OnClick there has to be, say the Standards, an OnKeyPress handler, so that people not using a mouse can still access the content.
Some tags have an onclick javascript handler. EG:
<a onclick="doSumat();">
Is the following cross browser, working javascript:
<a onclick="doSumat();" onkeypress="this.onclick();" >
Will it work reliably in all browsers and will the result be the same as a mouse click for someone using a screen reader?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
W3C - SCR35:通过使用锚点和按钮的 onclick 事件使操作键盘可访问。
虽然“onclick”听起来像是与鼠标相关,但 onclick 事件实际上映射到链接或按钮的默认操作。当用户用鼠标单击元素时,会发生默认操作,但当用户聚焦元素并按 Enter 或空格键时,以及通过辅助功能 API 触发元素时,也会发生默认操作。
来源http://www.w3.org/TR/WCAG20-TECHS/SCR35
W3C - SCR35: Making actions keyboard accessible by using the onclick event of anchors and buttons.
While "onclick" sounds like it is tied to the mouse, the onclick event is actually mapped to the default action of a link or button. The default action occurs when the user clicks the element with a mouse, but it also occurs when the user focuses the element and hits enter or space, and when the element is triggered via the accessibility API.
Source http://www.w3.org/TR/WCAG20-TECHS/SCR35
在这种情况下,为什么不使用 onclick 和 onkeypress 处理程序调用
doSumat();
呢?如果您需要
this
上下文,那么您需要使用doSumat.call(this);
,但您仍然可以将其放置在两个处理程序中。对于 1600 个页面,我想您正在尝试找到一些简单的东西来使用
onclick
处理程序附加到每个元素,但定义规则来盲目复制 < 中的所有内容不应该那么复杂。 code>onclick 语句到onkeypress
表达式。In this case, why not call
doSumat();
with both the onclick and onkeypress handlers?If you need a
this
context, then you'll need to usedoSumat.call(this);
, but you can still place that in both handlers.With 1600 pages, I imagine you're trying to find something simple to append to every element with an
onclick
handler, but shouldn't be that much more complex to define rules to blindly copy everything from anonclick
statement to anonkeypress
expression.