当控制键按下时,我无法让选项卡在 keydown 上工作。我怎样才能做到这一点。
$(document).keydown(function (e) {
if (e.ctrlKey && e.which === 9){
alert('tab pressed when controlkey is down');
}
});
这是一个可行的解决方案。但如果我是你,我不会抓住 CTRL+Tab。可以捕获大多数快捷键(如 CTRL+S),然后您可以调用 event.preventDefault() 来防止默认行为。例如,在许多浏览器中,这将停止显示保存网页的对话框。但是使用 CTRL+Tab 会被捕获,但是 event.preventDefault() 没有达到预期的效果,在 Firefox 中 CTRL+Tab 会更改选项卡。您可以使用下面的代码看到两者的作用。你可以拿它来试驾。
<html><body>
<script>
function shortcutHandler(event) {
if ((event.charCode == 115) && (event.ctrlKey)) {
document.getElementById("debug").innerHTML += 'CTRL+S<br/>'
event.preventDefault()
}
if ((event.keyCode == 9) && (event.ctrlKey)) {
document.getElementById("debug").innerHTML += 'CTRL+Tab<br/>'
event.preventDefault()
}
}
document.addEventListener("keypress", shortcutHandler, true);
</script>
<div id=debug style="border: 1px solid red"></div>
</body></html>
这是一个jquery版本,试驾
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>
$(window).keypress(function(event){
if ((event.charCode == 115) && (event.ctrlKey)) {
document.getElementById("debug").innerHTML += 'CTRL+S<br/>'
event.preventDefault()
}
if ((event.keyCode == 9) && (event.ctrlKey)) {
document.getElementById("debug").innerHTML += 'CTRL+Tab<br/>'
event.preventDefault()
}
});
</script>
</head>
<body>
Press CTRL+S or CTRL+Tab
<div id=debug style="border: 1px solid red"></div>
</body></html>