我试图在 Internet Explorer 10 中覆盖 ControlP,但似乎无法弄清楚如何去做。我模拟了一个 Fiddle 使用一些在 Chrome 中工作的非常简单的代码(至少在我的 Mac 上)。但是在 IE 10 中运行它并使用 ControlP 仍然会弹出打印对话框。
这是我的简单代码:
$('.test').on('keydown', function(e){
if (e.metaKey || e.ctrlKey){
$('body').append('ctrl p pressed');
e.preventDefault();
return false;
}
});
有人知道这里发生了什么吗?
最佳答案
防止默认行为
- 使用attachEvent而不是 addEventListener
- 将
event.keyCode
设置为0 - 返回错误
例如。 (防止 Ctrl+O 和 Ctrl+P 的默认行为)
/*jslint browser: true */
(function scriptInitScript() {
"use strict";
document.attachEvent("onkeydown", function handleKeyDown(event) {
if (event.ctrlKey) {
switch (event.keyCode) {
case 79: // o
case 80: // p
event.keyCode = 0;
return false;
}
}
});
}());
请注意。如果可用,jQuery 1.9 使用 addEventListener
。 See in github .
关于javascript - 防止 Internet Explorer 中的默认击键操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443742/