js 如何屏蔽 Chrome 的部分快捷键
<p>需求是</p>
<ul>
<li>希望在网页上使用自定义快捷键。</li>
<li>但部分希望自定义的快捷键跟 Chrome 自有快捷键冲突了,比如 Ctrl+Shfit+A 、Ctrl+ShiftG ,都会被浏览器先触发。</li>
<li>如果直接在 keydown 后 preventDefault ,可以阻挡大部分的快捷键,但一些浏览器常用键也就被覆盖了,比如 Ctrl+R 刷新页面也不行了。</li>
<li>但如果在判断组合键之后,再 preventDefault 也会触发 Chrome 默认快捷键(猜测是判断组合键那几微秒的延迟,就被 Chrome 截胡了)。</li>
<li>Github 在任意页面输入 Ctrl+K 、Cmd+K ,都可以唤起窗口,但不影响 Chrome 其他的快捷键设置。好奇人家是怎么实现的。</li>
</ul>
收藏(0)
分享
相关标签:
注意:本文归作者所有,未经作者允许,不得转载
-
2022年9月26日 15:26
0
0
-
2022年9月26日 16:28
document.body.addEventListener('keydown', event => {
if ('p' === event.key.toLowerCase() && (event.getModifierState('Meta') || event.getModifierState('Control'))) {
event.preventDefault()
console.log('检测到组合键')
}
}, false)
我是 Mac ,打印的快捷键是 command+p ,windows 上我猜应该是 ctrl+p
实测,像是打印、查找是能够拦截住的,但打开新窗口的快捷键不行
如果把'keydown'改成'keypress'也不行
0
0