4

我正在使用 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 保存。

有任何想法吗?

4

2 回答 2

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()and event.stopImmediatePropagation()or return false

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

event.preventDefault()如果没有alerts,它本身就足以阻止保存对话框,现在通过警报可以阻止默认操作。

于 2013-02-13T19:03:41.683 回答
1

这对我有用:

<script>
        $(document).bind('keypress', 'Ctrl+s',
            function (event) {
                event.preventDefault();
                alert('saving?');
            });
</script>
于 2013-02-13T19:05:24.257 回答