有没有可能禁用浏览器的快捷键?
因为应用程序中使用了许多快捷键。例如,使用Ctrl+p,我不想让浏览器弹出打印窗口。最近等待一段时间后仍未得到答复,我决定现在只对IE进行快捷方式禁用操作。是否有可能通过vbscript禁用IE快捷键访问菜单/打印等功能?
因为应用程序中使用了许多快捷键。例如,使用Ctrl+p,我不想让浏览器弹出打印窗口。最近等待一段时间后仍未得到答复,我决定现在只对IE进行快捷方式禁用操作。是否有可能通过vbscript禁用IE快捷键访问菜单/打印等功能?
是的,你可以使用JavaScript监听各种键盘组合,并禁用默认行为。甚至有一个库可以使用和测试这里。我刚刚在Google Chrome和Firefox中使用它们的演示文本区域进行了测试,它可以按照你想要的方式工作。
shortcut.add("Ctrl+P",function() {
return;
});
这在我上面列出的浏览器中运作正常,但IE在某些情况下不允许你覆盖默认行为。
在IE中,你唯一的选择是使用类似以下内容来完全禁用Ctrl键:
document.onkeydown = function () {
if (event.keyCode == 17) alert('Ctrl Key is disabled');
};
这并不是理想的情况,也可能不是您想要的,但它可以工作。
有一个不错的技巧可以应对IE10+,避免显示浏览器菜单在按下alt键组合时,比如Alt + F
,Alt + H
...
我最近在IE11上使用了这个技巧,只需在body元素上添加一个带有属性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。document.addEventListener("keydown", function(oEvent) {
if (oEvent.keyCode == 80 && oEvent.ctrlKey)
oEvent.preventDefault();
}, false)
我正在处理类似的问题,钩取键盘事件 下面的代码可以很好地禁用,但是在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;
在您的应用程序中,在按下Ctrl+P后调用该方法后,将键码设置为零。我认为这将解决您的问题...
window.event.keyCode=0;
这将把按键码设置为零。因此,当浏览器检查按键码时,它将为零。因此默认函数将不会执行...
尝试一下...只是一个建议。
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;
};