如何通过javascript实现CTRL或者SHIFT +的快捷键组合?
ASP.NET 2.0 Web应用程序,如何最好通过JavaScript实现`CTRL + Letter'的快捷键组合,以使Web应用程序在人体工程学上更好?如何通过JavaScript捕获多键键盘事件?
解决方案
回答
Javascript支持ctrl + alt + shift键。我认为我们可以解决其余的问题。关联。
回答
事件侦听器函数将传递一个Event对象。上面有很多有用的信息,包括属性" altKey"," ctrlKey"," shiftKey"和" metaKey"。如果在该事件触发时按住任意修改键,则相应的属性将设置为true。
这适用于键盘和鼠标事件(onclick等)。请注意,如果我们具有onkeydown事件侦听器,则修饰键本身将触发该事件。
window.onkeyup = function(e) { if (e.altKey) alert("Alt pressed"); if (e.shiftKey) alert("Shift pressed"); }
这已在Firefox 3,Windows XP上进行了测试。
回答
我知道这不能回答原始问题,但是我的建议是:不要在Web应用程序中使用键组合快捷方式!
为什么?因为它可能破坏可用性,而不是增加可用性。尽管通常的浏览器不使用"一键快捷键"(Opera从上一个主要版本中默认删除它),但是我们无法弄清各种浏览器使用的键组合快捷键是什么,也将是什么。 。
此外,如果访问者使用可高度自定义的浏览器(例如Firefox或者Opera),则他们配置自己的快捷方式或者使用定义一些其他插件的其他插件的风险很高。
请记住,Web应用程序是浏览器的依赖项,并且永远不要假设,如果它在我们最喜欢的,调整力最强的全功能浏览器上运行,它将对我们朋友的响应相同。
回答
简短的答案是,我们使用Javascript捕获了keydown事件,然后使用该事件触发功能。
相关文章:
- http://www.openjs.com/scripts/events/keyboard_shortcuts/
- http://udayms.wordpress.com/2006/03/17/ajax-key-disabling-using-javascript/
- http://protocolsofmatrix.blogspot.com/2007/09/javascript-keycode-reference-table-for.html
- http://www.quirksmode.org/js/keys.html
如果我们使用的是jQuery库,建议我们查看适用于跨浏览器解决方案的HotKeys插件。
I know this is not answering the orginal question, but here is my advice: Don't Use Key Combination Shortcuts In A Web Application! Why? Because it might break de the usability, instead of increasing it. While it's generally accepted that "one-key shortcut" are not used in common browsers (Opera remove it as default from its last major version), you cannot figure out what are, nor what will be, the key combination shortcuts used by various browser.
Gizmo提出了一个很好的观点。在http://www.clagnut.com/blog/193/上有一些有关常用Accesskey分配的信息。
如果我们确实更改了访问密钥,则以下是一些文章,它们为如何做得很好提供了很好的建议:
- 快捷键:解锁隐藏导航
- 在HTML表单和链接中使用accesskey属性
并且我们可能会发现Firefox的默认"键盘和鼠标快捷方式"的此页面很有用(另一版本的相同信息)。 Internet Explorer 7和Internet Explorer 6的键盘快捷键。Opera和Safari的键盘快捷键。
JAWS或者添加更多键盘快捷键的其他屏幕阅读器很可能会遇到问题。