EDIT:等待了一会儿,但什么都没得到,我决定做快捷方式禁用thingy仅适用于IE浏览器。是否有可能禁用IE快捷键可访问菜单/打印通过vbscript等?
是否可以禁用浏览器快捷键?
因为其中许多正在应用程序中使用。例如,正在使用Ctrl + p,但我不希望浏览器弹出打印窗口。
是的,您可以使用javascript侦听各种组合键,并禁用默认行为。甚至还有一个库可供您使用和测试here。我刚刚在他们的演示文本区域中使用google chrome和firefox对它进行了测试,它可以根据需要工作。
shortcut.add("Ctrl+P",function() {
return;
});
这在上面列出的浏览器中有效,但是IE在某些情况下将不允许您覆盖默认行为。
您在IE中的唯一选项是完全禁用Ctrl键,例如:
document.onkeydown = function () {
if (event.keyCode == 17) alert('Ctrl Key is disabled');
};
这不是理想的,可能不是您想要的,但它会起作用。
您可以尝试为keydown事件创建事件处理程序,检查keyCode并根据需要阻止其默认操作。但是,这并非在所有浏览器中都适用。
Firefox示例(取消“ Print”短键,已验证):
document.addEventListener("keydown", function(oEvent) {
if (oEvent.keyCode == 80 && oEvent.ctrlKey)
oEvent.preventDefault();
}, false)
与IE10 +搭配使用时,有一个不错的技巧,可以避免在Alt键组合上显示浏览器菜单,例如Alt + F
,Alt + H
...
我最近在IE11上使用过,只需在您的身上添加一个属性为accesskey
:[yourKey]
的锚点>
<body> <a href="#" accesskey="f"></a> <script type="text/javascript"> window.onkeydown = function(e){ console.log(e.keyCode + " alt: " + e.altKey); e.preventDefault(); }; window.onkeyup = function(e){ console.log(e.keyCode + " alt: " + e.altKey); e.preventDefault(); }; </script> </body>
现在,当您按
Alt + f
时,浏览器将不会像往常一样显示“文件弹出”,并且将使事件键降和键降获得,而不仅仅是键降。
我正在研究类似的问题,hooking keyboard event以下代码可以很好地禁用它,除非IE上的flash对象没有得到关注。由于我正在尝试处理Flash对象上的键盘事件,因此该代码对我不起作用。
从您的应用程序中调用Ctrl + P的方法后,只需将密钥代码设为零即可。我认为这将解决您的问题...
这在IE 8中对我有用。重要的部分是IE需要将ev.returnValue设置为false。注意:仅当您将重点放在文档上的某些元素上时,此方法才有效...也就是说,如果您仅加载页面并单击“ ctrl-p”,您将看到打印对话框。但是,如果您单击页面上的某个地方,然后尝试一下,它会取消显示打印对话框。