Ruby on Rails键盘快捷键

use*_*289 6 javascript navigation user-interface keyboard-shortcuts ruby-on-rails

有谁知道如何在我的网站上使用Ruby on Rails设置键盘快捷键?例如,如果用户想要使用键盘快捷键与站点进行交互而不是单击按钮/链接,我该怎么做?

Dan*_*uis 8

最简单的方法是accesskey为元素的属性设置一个值.如果你想通过Rails做到这一点,你可以通过向submit_taghelper方法传递一个额外的选项来做到这一点,如下所示:

<%= submit_tag("Save and Refresh", :accesskey => "R") %>
// Equivalent to <input type="submit" value="Save and Refresh" accesskey="R" />
Run Code Online (Sandbox Code Playgroud)

当按下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;

    // ...
  }
});
Run Code Online (Sandbox Code Playgroud)

这是另一个在Javascript中处理键盘快捷键的SO 问题.

请注意,这些解决方案都不依赖于Rails.