如何捕获按键,例如Ctrl + Z,而不需要在JavaScript中的页面上放置输入元素?似乎在IE中,按键和键盘事件只能绑定到输入元素(输入框,文本区等)捕获按键而不在页面上放置输入元素?
回答
jQuery的也有极好的实现,它是非常容易使用。这里是你如何可以跨浏览器实现此功能:
$(document).keypress(function(e){
var checkWebkitandIE=(e.which==26 ? 1 : 0);
var checkMoz=(e.which==122 && e.ctrlKey ? 1 : 0);
if (checkWebkitandIE || checkMoz) $("body").append("<p>ctrl+z detected!</p>");
});
在IE7测试,火狐3.6.3 &的Chrome 4.1.249.1064
做的另一种方式,这是使用keydown事件和跟踪事件。关键代码。然而,由于归一化的jQuery键码,使用event.which则charCode,其规格建议在各种情况下使用event.which:
$(document).keydown(function(e){
if (e.keyCode==90 && e.ctrlKey)
$("body").append("<p>ctrl+z detected!</p>");
});
不知道e.which可以捕捉按键以及鼠标点击!你能告诉我如何获得键码26吗? – powerboy 2010-05-21 01:51:59
键码26是由按键事件(指示CTRL + z)设置的“哪个”的特定ID。要查看keypress事件的更多字符映射,请查看[jQuery文档](http://api.jquery.com/keypress/)或[unixpapa的关键事件测试器](http://unixpapa.com/js /testkey.html) – Trafalmadorian 2010-05-21 02:05:30
Thx。我知道键码的含义。我的意思是,17是Ctrl,90是Z,那么你是怎么得到26号的?我只是google搜索,但无法找到答案。 – powerboy 2010-05-21 03:18:46
document.onkeydown = keyDown;
document.onkeypress = keyPress;
等在IE
对我的作品
你试过在IE6上,并尝试过箭头键吗? – powerboy 2010-05-21 01:28:37
你不解释'keyDown'和'keyPress'是什么。这会引发错误。 – 2017-08-04 07:15:52
代码&检测CTRL + Z
document.onkeyup = function(e) {
if(e.ctrlKey && e.keyCode == 90) {
// ctrl+z pressed
}
}
对于非打印键,例如箭头键和快捷键如Ctrl-Z ,Ctrl-x,Ctrl-c可能会在浏览器中触发某些操作(例如,在可编辑的文档或元素中),则在所有浏览器中可能不会发生按键事件。因此,如果您想要抑制浏览器的默认操作,则必须使用。如果没有,keyup
也可以。
附加一个事件document
作品在所有主要浏览器:
document.onkeydown = function(evt) {
evt = evt || window.event;
if (evt.ctrlKey && evt.keyCode == 90) {
alert("Ctrl-Z");
}
};
对于一个完整的参考,我强烈建议Jan Wolter's article on JavaScript key handling。
检测按键,包括组合键:这里
window.addEventListener('keydown', function (e) {
if (e.ctrlKey && e.keyCode == 90) {
// Ctrl + z pressed
}
});
的好处是,你是不是覆盖任何全局性,而是仅仅引入副作用。不好,但绝对比这里的其他建议少得多。
对于现代的JS,请使用event.key
!
document.addEventListener("keypress", function onPress(event) {
if (event.key === "z" && event.ctrlKey) {
// Do something awesome
}
});
- 1. 捕获一个输入键在页面上的任何位置按下
- 2. 如何捕获键盘输入而不写在屏幕上
- 3. 捕获页面内的文本而不刷新输入
- 4. 捕获iPhone的按键输入?
- 5. 从CComboBox捕获输入按键
- 6. 不缩放DIV元素,而缩放页面
- 7. 在黑莓键盘上捕获按键
- 8. jquery/Javascript - 捕获页面屏幕或元素的位置
- 9. 模拟按键而不瞄准元素?
- 10. 如何在页面上随机放置几个元素?
- 11. 在页面上居中放置可变大小的块元素
- 12. 在输入文本元素中按下“输入”时停止页面刷新
- 13. 如何把伪元素放在父元素的上面(和旁边),而不影响父元素的位置
- 14. 在Android上捕获PhoneGap上的按键
- 15. 在java面板中捕获按键
- 16. 发送键到没有输入元素的页面
- 17. Jinja2 html按钮:在不同的页面上捕获POST
- 18. 使用watir-webdriver在页面上打印输入元素数组
- 19. 如何在页面加载淡入元素,而不是“出现”?
- 20. 页面上放置按钮的问题
- 21. 使用按键和捕捉键获得输入值
- 22. 捕获HTML文本输入应用键后按键?
- 23. 在页面上查找元素而不搜索整个文档
- 24. 专注于页面而不是元素
- 25. Google如何在页面转换时捕获按键?
- 26. 从标准输入捕获字符而不等待输入被按下
- 27. 捕获所有页面级错误,而不会打破页面
- 28. 将html页面的所有元素放入页面的中心
- 29. 在iPad上进行方向更改后不正确的页面元素放置
- 30. 放置在一起时页面上的多个JQuery元素不起作用
你不应该需要。 – muhmuhten 2010-05-21 01:14:00
为什么不......? – 2010-05-21 08:28:10
@Tim:因为当GUI元素没有聚焦时按下这些按键组合将会非常规,因此违反了“最小惊喜原则”。 – 2011-07-24 18:15:32