编辑:等了一会儿之后还没有得到任何东西,我已经决定了 做快捷方式禁用东西只为 IE现在。是否有可能禁用 用于访问菜单/打印的IE快捷键 等等通过vbscript?
是否可以禁用浏览器快捷键?
因为他们中的许多人正在申请中使用。例如, Ctrl + p 正在使用,我不希望浏览器弹出打印窗口。
答案 0 :(得分:4)
是的,您可以使用javascript监听各种组合键并禁用默认行为。甚至还有一个可以使用的库并测试here。我只是在他们的演示textarea中使用谷歌浏览器和Firefox来测试它,它可以按你的需要工作。
shortcut.add("Ctrl+P",function() {
return;
});
这适用于我上面列出的浏览器,但IE在某些情况下不允许您覆盖默认行为。
IE中唯一的选择是完全禁用Ctrl键,例如:
document.onkeydown = function () {
if (event.keyCode == 17) alert('Ctrl Key is disabled');
};
哪个不理想,可能不是你想要的,但它会起作用。
答案 1 :(得分:3)
您可以尝试为keydown事件创建事件处理程序,检查keyCode并在需要时阻止其默认操作。但是,这不适用于所有浏览器。
Firefox的示例(取消“打印”短键,已验证):
document.addEventListener("keydown", function(oEvent) {
if (oEvent.keyCode == 80 && oEvent.ctrlKey)
oEvent.preventDefault();
}, false)
答案 2 :(得分:2)
使用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
时,浏览器将不会像往常一样显示“文件弹出窗口”,并且会让事件为keydown和keyup,而不仅仅是keydown。
答案 3 :(得分:1)
我正在研究类似的问题,hooking keyboard event下面的代码很适合禁用,除了IE上的flash对象没有得到关注。由于我试图在flash对象上处理键盘事件,因此该代码对我不起作用。
function hookKeyboardEvents(e) {
// get key code
var key_code = (window.event) ? event.keyCode : e.which;
// case :if it is IE event
if (window.event)
{
if (!event.shiftKey && !event.ctrlKey) {
window.event.returnValue = null;
event.keyCode = 0;
}
}
// case: if it is firefox event
else
e.preventDefault();
}
window.document.onkeydown = hookKeyboardEvents;
答案 4 :(得分:1)
在Ctrl + P上调用方法后,从你的应用程序中只需将键码设为零。我认为这样可以解决你的问题......
window.event.keyCode = 0;
这会将键码设置为零。因此,当资源管理器检查keyCode时它将为零...所以默认函数将不会执行...
试试这个...只是一个建议
答案 5 :(得分:0)
这在IE 8中适用于我。重要的部分是IE要求将ev.returnValue设置为false。注意:这只有在您关注文档中的某些元素时才有效...也就是说,如果您只是加载页面并点击“ctrl-p”,您将看到打印对话框。但是如果你单击页面上的某个地方,然后尝试它,它应该禁止打印对话框。
document.onkeydown = function (e) {
var ev = e||window.event;
// Do what I want keys to do ...
// Block browser short cuts
if(ev.preventDefault) // non-IE browsers
ev.preventDefault();
else // IE Only
ev.returnValue = false;
};