1

当控制键按下时,我无法让选项卡在 keydown 上工作。我怎样才能做到这一点。

     $(document).keydown(function (e) {
        if (e.ctrlKey && e.which === 9){
            alert('tab pressed when controlkey is down');
        }
    });
4

1 回答 1

0

这是一个可行的解决方案。但如果我是你,我不会抓住 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>
于 2012-09-30T11:16:21.750 回答