如何检测按下 Esc 键?
2010-07-30
747102
如何在 IE、Firefox 和 Chrome 中检测 Esc 键按下情况?
以下代码在 IE 中有效并提示
27
,但在 Firefox 中则提示
0
$('body').keypress(function(e){
alert(e.which);
if(e.which == 27){
// Close my modal window
}
});
3个回答
注意:
keyCode
已
弃用
,请改用
key
。
function keyPress (e) {
if(e.key === "Escape") {
// write your logic here.
}
}
代码片段:
var msg = document.getElementById('state-msg');
document.body.addEventListener('keydown', function(e) {
if (e.key == "Escape") {
msg.textContent += 'Escape pressed:'
}
});
Press ESC key <span id="state-msg"></span>
keyCode
和
keypress
已弃用。
It seems
keydown
andkeyup
work.
$(document).keyup(function(e) {
if (e.key === "Escape") { // escape key maps to keycode `27`
// <DO YOUR WORK HERE>
}
});
Jigar Joshi
2010-07-30
keydown
事件对于 Escape 来说非常适用,并且允许您在所有浏览器中使用
keyCode
。此外,您需要将侦听器附加到
document
而不是正文。
2016 年 5 月更新
keyCode
现已弃用,大多数现代浏览器现在都提供
key
属性,尽管您现在仍需要后备以获得不错的浏览器支持(在撰写本文时,Chrome 和 Safari 的当前版本不支持它)。
2018 年 9 月更新
evt.key
现在受到所有现代浏览器的支持浏览器。
document.onkeydown = function(evt) {
evt = evt || window.event;
var isEscape = false;
if ("key" in evt) {
isEscape = (evt.key === "Escape" || evt.key === "Esc");
} else {
isEscape = (evt.keyCode === 27);
}
if (isEscape) {
alert("Escape");
}
};
Click me then press the Escape key
Tim Down
2010-07-30
使用 JavaScript 您可以检查工作 jsfiddle
document.onkeydown = function(evt) {
evt = evt || window.event;
if (evt.keyCode == 27) {
alert('Esc key pressed.');
}
};
jQuery(document).on('keyup',function(evt) {
if (evt.keyCode == 27) {
alert('Esc key pressed.');
}
});
Subodh Ghulaxe
2014-07-11