【问题标题】:Creating keyboard shortcuts for your HTML5 app?为您的 HTML5 应用程序创建键盘快捷键?
【发布时间】:2013-03-05 00:52:29
【问题描述】:

如何为 HTML5 应用程序创建键盘快捷键?使用键事件不起作用,因为一些浏览器已经为内置功能定义了大部分输入,例如另存为...(这对于交互式应用程序无用)。

【问题讨论】:

  • 你必须展示你尝试过的东西,以及你不喜欢的东西,有很多浏览器没有占用的快捷方式......

标签: javascript jquery html events keyboard-shortcuts


【解决方案1】:

嗯,那个对我有用:(Chrome 中的 CTRL-S)

$(document).keydown(function(evt){
    if (evt.keyCode==83 && (evt.ctrlKey)){
        evt.preventDefault();
        alert('worked');
    }
});

【讨论】:

  • 是的,关键是使用event.preventDefault()。不过,某些快捷方式在某些浏览器中无法使用,而另一些则无法在其他浏览器中使用
  • 我明白你的意思,ctrl-s 将在 FF 中启动保存对话框并发出警报,但正如上面提到的 Juan Mendes,你要么应该使用任何浏览器中未使用的快捷方式,要么使用别名用于不同浏览器的热键。我绝对看不到任何其他方式,因为网络应用程序无法覆盖内置功能。也许你应该考虑为此编写插件。
  • 当然,event.preventDefault() 确实是我遗漏的关键点。请问我您的解决方案是否是跨浏览器的(如规范中所述)?
  • 不,不是。我想我已经在上面的评论中提到了它:)
  • 这是有道理的,因为keydown 会触发多次。整洁的代码。
【解决方案2】:

试试看。

http://www.openjs.com/scripts/events/keyboard_shortcuts/#add_docs

添加快捷方式的示例

shortcut.add("Ctrl+B",function() {
alert("Bold");});

删除快捷方式的示例

shortcut.remove("Ctrl+B");

【讨论】:

  • shortcut.js 非常慢。它让打字成为一场噩梦。