【发布时间】:2010-01-15 22:06:59
【问题描述】:
有人知道如何在我的网站上使用 Ruby on Rails 设置键盘快捷键吗?例如,如果用户想使用键盘快捷键而不是单击按钮/链接与网站交互,我该怎么做?
【问题讨论】:
标签: javascript ruby-on-rails user-interface navigation keyboard-shortcuts
有人知道如何在我的网站上使用 Ruby on Rails 设置键盘快捷键吗?例如,如果用户想使用键盘快捷键而不是单击按钮/链接与网站交互,我该怎么做?
【问题讨论】:
标签: javascript ruby-on-rails user-interface navigation keyboard-shortcuts
最简单的方法是为元素的accesskey 属性设置一个值。如果你想通过 Rails 做到这一点,你可以通过向 submit_tag 辅助方法传递一个额外的选项来做到这一点,如下所示:
<%= submit_tag("Save and Refresh", :accesskey => "R") %>
// Equivalent to <input type="submit" value="Save and Refresh" accesskey="R" />
当 Alt+R(或 Alt+Shift 时,这将导致该按钮被“点击” +R,取决于您的浏览器)被按下。 accesskey 属性适用于 <input>、<button> 和 <a> HTML 元素。
如果您想要做一些更复杂的事情(例如 GMail 的键盘快捷键),您将不得不编写一些 javascript。它的核心是一个事件处理程序,它监视文档上的按键,然后在按下某个键时调用其他 javascript 函数来运行您想要的代码。这是一种基于按键设置快捷方式的非常简单的方法(它使用 Prototype,这是 Rails 默认使用的 Javascript 库,未经测试):
$(document.body).observe("keypress", function(event)
{
var keyCode = event.which || event.keyCode; // W3C and Microsoft's event models
// have differing ways of
// determining which key was pressed
var keyChar = String.fromCharCode(keyCode); // turn a code into an actual character
switch (keyChar)
{
case 'a':
// Run code if the user presses 'a'
break;
// ...
}
});
这是另一个 SO question 处理 Javascript 中的键盘快捷键。
请注意,这些解决方案都没有真正依赖 Rails。
【讨论】:
请查看this page,了解 Web 应用程序的键盘快捷键。该网站提供了一个执行此功能的 .js。
【讨论】:
您可以使用任何 JavaScript 库来提供键盘快捷键。由于 Rails 默认使用 Prototype(用于 JavaScript 辅助方法),您可能需要查看 prototype-hotkeys。
该网站上有一些使用示例。
【讨论】: