Javascript Safari-按箭头键导航库时发出错误声音

Javascript Safari-按箭头键导航库时发出错误声音,javascript,jquery,macos,safari,Javascript,Jquery,Macos,Safari,我的网站上有一个图像库,我可以使用左右箭头键来导航它。按下向左或向右箭头键时,Chrome不会发出声音,但Safari会发出声音。听起来像是错误的声音 我注释掉了移动到下一个/上一个图像的代码,声音仍然出现。这意味着这不是由于我的代码,有一个声音。我正在使用jquery检测按键 $(document).keyup(function(e) { switch(e.which) { case 37: // left $(".gallery-nav-left").clic

我的网站上有一个图像库,我可以使用左右箭头键来导航它。按下向左或向右箭头键时,Chrome不会发出声音,但Safari会发出声音。听起来像是错误的声音

我注释掉了移动到下一个/上一个图像的代码,声音仍然出现。这意味着这不是由于我的代码,有一个声音。我正在使用jquery检测按键

$(document).keyup(function(e) {
  switch(e.which) {
      case 37: // left
        $(".gallery-nav-left").click();
      break;

      case 39: // right
        $(".gallery-nav-right").click();
      break;

      default: return;
  }
});

为什么这只发生在Safari中?

似乎Safari浏览器在按下箭头时发出错误的声音,这可能是因为没有水平滚动条。本机浏览器操作是在箭头上滚动窗口。当焦点中没有输入元素时会发生这种情况

在您的情况下,您希望阻止默认浏览器行为,但为此,您需要keydown事件,因为keyup是在默认浏览器操作之后调用的,所以您不能使用keyup来阻止它:

$(document).keydown(function(e) { // you need keydown
  switch(e.which) {
      case 37: // left
        $(".gallery-nav-left").click();
      break;

      case 39: // right
        $(".gallery-nav-right").click();
      break;

      default: return;
  }
  return false; // or e.preventDefault() - on document it will be the same
});

尝试添加
返回false在末尾。它将阻止默认浏览器行为。箭头是用来滚动窗口的,所以当页面底部没有滚动条时,Safari似乎会发出错误的声音。这不起作用。我刚刚也尝试了e.preventDefault(),但仍然出现了声音。我意识到您正在使用keyup,请尝试keydown而不是keyup,您无法阻止keyup中的行为,因为它是在本机行为之后调用的。这很有效!你能在一个单独的答案后,所以我可以接受它请。