我网站的许多用户要求使用键盘快捷键来访问常用页面。我知道链接可能带有accesskey,但跨浏览器访问它们却不一致。我将使用JavaScript来检测快捷方式,我希望您输入关于修饰键应该是什么的信息。我倾向于Ctrl + Shift。

#1 楼

有两个例子可能不足以将其称为“既定做法”,但至少有两个大例子:Google和Twitter都不使用。或者,如果您想以这种方式查看,则其导航的修饰键为G。

要转到Twitter的“收藏夹”页面,请先按G,然后按F。要转到gmail草稿文件夹,按G再按D。

非导航快捷方式也使用简单字母;例如J用于向前移动列表(推文,电子邮件等),K用于向后移动。*

*在我的书中,这是绝对错误的。对我而言,“ K”左侧的“ J”表示“ J”应为“上一个”,“ K”应为“下一个”。但是,以其他方式执行此操作似乎是标准方法。

两者都不使用“真正的”修饰键。我们也开始研究Stack Exchange网站的键盘快捷键,并且我们可能会做同样的事情。我发现根本不使用修饰键的另外两个原因:


不太可能绊倒已经使用的东西。某些操作系统,窗口管理器,浏览器,浏览器插件或Greasemonkey脚本可能已采用Ctrl,Alt,Meta,Command,Shift和字母的任何组合。仅字母?没那么多。
易于使用。 “按Ctrl-Alt-Q打开Foo选项卡,然后按Meta-Shift-F12执行Bar操作” –但这并不能使我的生活更加轻松/快捷,这是键盘快捷键的全部目的。

另一方面,需要考虑以下两个注意事项:



当用户在输入键盘时键入击键时,您显然必须忽略它们文本框。这不是技术问题,但这意味着用户无法使用快捷方式。

如果您的页面使搜索框自动聚焦,或者您的网络应用非常文字化条目繁重,可能会引起问题。


您可能需要考虑启用/禁用。键盘快捷键是高级用户功能。当“正常”用户不小心触发键盘快捷键(显然,使用修饰键会使其不太可能)时,可能会感到惊讶。例如,Gmail的键盘快捷键默认情况下处于关闭状态,但? (自然地)显示键盘快捷键帮助-包括启用/禁用快捷键的链接。我认为键盘快捷键是一个可以进行设置的地方(用户偏好通常是我们希望在Stack Exchange网站上避免的事情),而Google为此提供的解决方案对此非常有用。

但是“默认情况下关闭”显然会隐藏可发现性,这可能是问题,也可能不是问题。


–但考虑到所有情况,“根本没有修饰键”对我来说是一个很好的解决方案。

评论


复合修饰符组合的另一点(按Ctrl-Alt-Q键打开“ Foo”选项卡,然后按Meta-Shift-F12键)-从辅助功能的角度来看,这实际上是很尴尬的。或者,即使您只有奇特的键盘(咳嗽),某些组合也可能需要进行手指体操。单键:毫不费力。

– Marc Gravell♦
2011年8月11日7:49



这是一个很棒的帖子@balpha。我确实要指出,J是“向下”,而K是“向上”。 VIM文本编辑器使用相同的逻辑

–米哈伊尔
2011年8月11日下午13:16

@Mikhail:我知道这一点,但是我不同意这种逻辑-毕竟,J在K的左边。对我来说,如果J在“下”,那么U必须在“上” 。但是我想我会习惯的:)

– balpha
2011年8月11日下午13:17

rollmops.wordpress.com/2006/05/01/vintage-computer自网络存在以来,就一直以这种方式使用HJKL密钥。在这一点上,这是传统!

–凯文·潘科(Kevin Panko)
2011年10月12日19:13

#2 楼

没有“最佳”或通用键修饰键选择

,您的最佳选择是:



不使用修饰键(仅单个按键),然后当用户的光标位于输入字段或文本区域中时停止检测按键,就像Google使用Gmail快捷方式一样。

-或-


根据您Google Analytics(分析)数据中的操作系统统计信息,它适合大多数访问者。允许需要快捷方式的高级用户以与桌面软件相同的方式激活快捷方式并在用户设置中覆盖修改键。

-或-

使用“触发”键而不是修饰键。例如,考虑到,2转到选项卡式导航区域中的第二个选项卡,而,3转到第三个选项卡。逗号后面紧跟数字的组合非常少见,足以减少发生冲突或意外按下的可能性。

在所有情况下,您都可以考虑默认情况下禁用快捷键,以防止大多数用户的意外行为可能不关心快捷键的用户。

为什么不只选择修饰符组合?

我建议这些方法的原因是,没有标准化的跨平台在浏览器环境中可以安全使用JavaScript的修饰键。包含Ctrl,Shift,Alt或Cmd的任何内容都可能会破坏某些平台上的某些浏览器快捷方式。例如,您的建议使用Ctrl + Shift将破坏Windows上的Firefox快捷方式,其中许多使用组合以执行特殊功能,例如Ctrl + Shift + D,可将所有打开的标签添加为书签。

浏览器制造商使用不同的快捷方式在每个不同的平台上触发访问键正是因为没有跨平台标准。例如,Apple在Safari中的Mac上使用Ctrl,在Windows上使用Alt。

此外,每个浏览器以不同的方式解决快捷方式冲突,这将给用户带来意想不到的后果。当您将按键绑定到JavaScript中的一个功能时,该功能也具有作为本机浏览器快捷方式的绑定...


如果您return false;,Firefox将自行运行JavaScript快捷方式,但会执行如果您return true;(默认情况下,两者均运行),则在您的JavaScript函数后面加上Firefox浏览器快捷方式。
IE将先运行JavaScript函数,然后再运行IE浏览器快捷方式。
Safari / Chrome / Opera将处理浏览器快捷方式,但不是JavaScript快捷方式。

[来源:John Resig的jquery.hotkeys自述页面底部的附录。]

评论


我喜欢非同步方法。虽然我可能会使用;键

–米哈伊尔
2011年8月11日下午13:21