使用JQuery捕获CTRL + S的最佳跨浏览器方法?

时间:2020-03-06 14:21:59  来源:igfitidea点击:

我的用户希望能够按" Ctrl" +" S"来保存表单。有没有一种跨浏览器的好方法来捕获Ctrl + S键并提交我的表格?

应用程序基于Drupal构建,因此可以使用jQuery。

解决方案

$(window).keypress(function(event) {
    if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) return true;
    alert("Ctrl-S pressed");
    event.preventDefault();
    return false;
});

各个浏览器的键码可能不同,因此我们可能需要检查的字符数不止115个。

我们可以使用快捷方式库来处理浏览器特定的内容。

shortcut.add("Ctrl+S",function() {
    alert("Hi there!");
});

老实说,我希望Web应用程序不要覆盖我的默认快捷键。 Ctrl + S已经在浏览器中执行了某些操作。根据我正在查看的网站突然进行更改会造成破坏性和令人沮丧的后果,更不用说经常出现故障了。我有网站劫持了Ctrl + Tab,因为它看起来与Ctrl + I一样,既破坏了我在网站上的工作,又阻止我像往常一样切换选项卡。

如果我们想要快捷键,请使用accesskey属性。请不要破坏现有的浏览器功能。

@Eevee:随着浏览器成为越来越丰富的功能的家并开始取代台式机应用程序,它不再是放弃使用键盘快捷键的选择。 Gmail丰富而直观的键盘命令集有助于我放弃Outlook。 Todoist,Google Reader和Google Calendar中的键盘快捷键每天都使我的生活变得越来越轻松。

开发人员绝对应该注意不要覆盖已经在浏览器中具有含义的击键。例如,我输入的WMD文本框莫名其妙地将Ctrl + Del解释为" Blockquote",而不是"向前删除单词"。我很好奇网站开发人员可以使用"浏览器安全"快捷方式的标准列表,并且浏览器将承诺在将来的版本中不使用。

我喜欢这个小插件。不过,它需要更多的跨浏览器友好性。

例子:

shortcut.add("Ctrl+c",function() {
    alert('Ok...');
}
,{
    'type':'keydown',
    'propagate':false,
    'target':document
});

用法

<script type="text/javascript" src="js/shortcut.js"></script>

下载链接:http://www.openjs.com/scripts/events/keyboard_shortcuts/#