javascript - Safari - 按箭头键导航画廊时出现错误声音
问题描述
我的网站上有一个图片库,我可以使用左右箭头键来导航它。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
});
推荐阅读
- javascript - Codeigniter - Onchange 时提交上传文件
- mysql - 当 Laravel 有足够的 n 条记录时,如何批量插入数据库?
- python - holoviews 数据集选择具有非法 python 变量字符的维度
- postgresql - 如何动态更改 Postgres 数据库的登录名、密码和主机?多个数据库
- python - 根据数组的另一列聚合一列中的最小最大值 - Python
- java - Apache Ignite OutOfMemory 使用率低
- python - 对这些数据包使用什么校验和算法?
- c++ - gcc 不将模板化内联 constexpr 变量的地址视为常量表达式?
- c# - 添加参数 HttpClient C#
- node.js - Nginx 有时“连接到上游时连接()失败(111:连接被拒绝)”