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 ページの保存も試行されます。

I know there has to be someway to get it to work, Wordpress in Firefox let's you press ctrl+s to save.

Any ideas?

4

2 に答える 2

9

alertコードの同期性を壊すFirefox のバグのようです。アラートを遅らせると、問題が回避されるようです。

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

JSビン


これは、私のバグの主張を証明するためのテスト ケースです。

$(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;
});

置き場

event.preventDefault()sがない場合、保存ダイアログを防止するには、それ自体で十分ですがalert、アラートを使用すると、デフォルトのアクションを防止できるようになりました。

于 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 に答える