防止在浏览器中使用ctrl+z
Preventing ctrl+z in browser
我使用下面的代码示例禁用ctrl + c和ctrl + v,它可以工作。我使用类似的机制禁用ctrl + z(撤消)在浏览器中,但它不起作用。
var ctrlDown = false;
var ctrlKey = 17, vKey = 86, cKey = 67, zKey = 90;
$('body').keydown(function(e) {
if (e.keyCode == 17 || e.keyCode == 91) {
ctrlDown = true;
};
}).keyup(function(e) {
if (e.keyCode == 17 || e.keyCode == 91) {
ctrlDown = false;
};
});
$("body").keydown(function(e){
if ((ctrlDown && e.keyCode == zKey) || (ctrlDown && e.keyCode == vKey) || (ctrlDown && e.keyCode == cKey)) {
e.preventDefault();
return false;
}
});
我可以从测试中看到,如果条件在你的$("body")。Keydown处理器没有触发。虽然ctrlDown确实被设置为true
,但由于某种原因,您的一系列条件没有触发。我不认为在全局作用域中存储键代码和ctrl状态将是一个很好的方法。
比起单独的处理程序来测试ctrl的使用,在"z"键下处理程序中测试是否使用ctrl(或Meta命令,也要与mac兼容)会更容易。在这种情况下,event
对象具有布尔属性ctrlKey
和metaKey
。所以你的代码应该是:
$("body").keydown(function(e){
var zKey = 90;
if ((e.ctrlKey || e.metaKey) && e.keyCode == zKey) {
e.preventDefault();
return false;
}
});
这仍然不是很健壮,因为你只想在Mac上检查metaKey,在Linux/Windows上检查ctrl来处理一些边缘情况,有人可能会按"Meta + Z"(这在Windows中有什么用吗?),但它很接近。它可以在我的Mac上运行。
谨慎和;您可能已经考虑过这一点——禁用操作系统级别的键盘快捷键是非常危险的。它以一种糟糕的方式扰乱了用户的期望。如果你在一个大的浏览器应用程序中重写类似的东西,这是完全合理的。小心!
相关文章:
- 在我的浏览器中用类似ctrl+s的PhantomJS保存一个网站
- 在jquery中按Ctrl+F5清除浏览器缓存
- 浏览器大小调整 Ctrl +/- :: 如何操作设置
- 侦听浏览器 Ctrl+F/查找布局修改
- CSS “overflow-x:hidden” 与浏览器 Ctrl+F 水平移出屏幕单词突出显示冲突
- 砌体在移动浏览器(chrome)上不起作用,并且仅在Chrome桌面版本上有效,如果我重新加载(ctrl + f5)页面
- 在使用angular的互联网浏览器之前捕获组合ctrl+n
- 覆盖浏览器's CTRL+F,并将其替换为Silverlight自定义搜索
- 边缘浏览器:防止按住Ctrl键并单击鼠标左键
- 如何在浏览器中隐藏查找栏?(javascript在调用Ctrl+F后取消它)
- 如何通过Ctrl + click禁用打开新的浏览器选项卡
- 如何禁用浏览器快捷键ctrl-N并在按下ctrl-N时触发功能?JS提琴添加
- 如何获取'Ctrl +'在浏览器上使用Javascript的行为
- 任何防止/禁用浏览器中CTRL +快捷键的方法
- 在浏览器上捕获Ctrl+W
- 防止在浏览器中使用ctrl+z
- 我如何实现缩放功能,就像浏览器的CTRL +
- 覆盖浏览器的默认快捷键(Ctrl+anyKey)
- 如何在每个浏览器中检查缩放级别是否低于100%(ctrl和-)
- 有什么方法可以检测osx浏览器javascript中的ctrl+click?没有jQuery