无法使用jQuery热键覆盖Firefox中的ctrl + s

时间:2013-02-13 18:48:17

标签: jquery jquery-plugins jquery-hotkeys

我正在使用jQuery Hotkeys插件:http://code.google.com/p/js-hotkeys/

以下是我正在使用的代码:

$(document).bind('keydown', 'Ctrl+s', function(event) { alert('saving?'); return false; });

在Chrome中,它工作正常,Ctrl + s默认功能被覆盖,但在Firefox中,它会触发警报,并且还会尝试保存html页面。

我知道必须有一些方法才能让它工作,F​​irefox中的Wordpress让你按ctrl + s保存。

有什么想法吗?

2 个答案:

答案 0 :(得分:9)

似乎是Firefox中的一个错误alert打破了代码的同步性。延迟警报似乎解决了这个问题:

$(document).bind('keydown', 'Ctrl+s', function(event) {
  setTimeout(function() {
    alert('saving?');
  }, 0);
  return false;
});

JSbin


这是一个测试案例来证明我的错误声明。

$(document).bind('keydown', 'Ctrl+s', function(event) {
  event.preventDefault();
});

以上(bin)将很好地阻止保存对话框。现在,如果您在其之前或之后添加提醒,则如果您执行event.preventDefault()event.stopImmediatePropagation()return false 会显示保存对话框:

$(document).bind('keydown', 'Ctrl+s', function(event) {
  event.preventDefault();
  event.stopImmediatePropagation();
  alert('saving?');
  return false;
});

Bin

如果没有event.preventDefault()

alert本身足以阻止保存对话框,现在有警报可以阻止默认操作。

答案 1 :(得分:1)

这对我有用:

<script>
        $(document).bind('keypress', 'Ctrl+s',
            function (event) {
                event.preventDefault();
                alert('saving?');
            });
</script>