PreventDefault 不适用于 Safari 5.0.4 中的 keydown

发布于 2024-10-27 15:24:41 字数 474 浏览 5 评论 0原文

我有以下代码,绑定 Alt+b 执行某些操作:

(function(jQuery){
    $(document).ready(function() {
       $(document).bind('keydown', 'alt+b', function(event) {
        // do stuff
        event.preventDefault();
      });
    });
})( jQuery );

在 PC 上使用 Safari 浏览器(v5.0.4)时,这会触发菜单显示(书签)。有没有办法阻止这种行为?在这种情况下,preventDefault 适用于 Chrome 和 Firefox。我也尝试过“返回 false”,但它也不起作用。

注意:在我第一次使菜单可见之前,我的代码似乎一直有效。之后,即使菜单隐藏,Alt+b 也会触发书签显示。

I have the following code that binds Alt+b to do something:

(function(jQuery){
    $(document).ready(function() {
       $(document).bind('keydown', 'alt+b', function(event) {
        // do stuff
        event.preventDefault();
      });
    });
})( jQuery );

When using Safari browser (v5.0.4) on PC this triggers the menu to show (Bookmarks). Is there a way to prevent this behavior? preventDefault works with Chrome and Firefox in this case. I also tried to 'return false' but it doesn't work either.

Note: it seems that my code works until I've made the menu visible for the first time. After that Alt+b triggers the bookmarks to show even if the menu is hidden.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鸠书 2024-11-03 15:24:41

我没有您的 Safari 版本(我无法测试),但您可以尝试一下 http:// /jsfiddle.net/LnvGR/2/

(function(jQuery){
   var keys = {};
$(document).keydown(function (e) {
    keys[e.which] = true;

    var kValues = '';
      for (var i in keys) {
          if (!keys.hasOwnProperty(i)) continue;
          kValues += i;
      }

     if (kValues == "1866" || kValues == "6618")
     {
         e.preventDefault();
         return false;
     }
});

$(document).keyup(function (e) {
    delete keys[e.which];
});

})( jQuery );

读取所有键,然后检查组合并调用preventDefault();

I don't have your version of Safari (I couldn't test) but you can give this a try http://jsfiddle.net/LnvGR/2/

(function(jQuery){
   var keys = {};
$(document).keydown(function (e) {
    keys[e.which] = true;

    var kValues = '';
      for (var i in keys) {
          if (!keys.hasOwnProperty(i)) continue;
          kValues += i;
      }

     if (kValues == "1866" || kValues == "6618")
     {
         e.preventDefault();
         return false;
     }
});

$(document).keyup(function (e) {
    delete keys[e.which];
});

})( jQuery );

Reading all keys, then checking for the combination and calling preventDefault();

生生漫 2024-11-03 15:24:41

试试这个:

(function(jQuery){
    $(document).ready(function() {
       $(document).bind('keydown', function(e) {
        if(e.keyCode==66){
          // do stuff
          e.preventDefault();
        }
      });
    });
})( jQuery );

在 safari 中测试,它不会触发书签。

Try this:

(function(jQuery){
    $(document).ready(function() {
       $(document).bind('keydown', function(e) {
        if(e.keyCode==66){
          // do stuff
          e.preventDefault();
        }
      });
    });
})( jQuery );

Tested in safari, and it doesn't trigger bookmarks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文