如何防止Ctrl--和Ctrl- +?

时间:2014-04-24 15:17:48

标签: javascript google-chrome events preventdefault

谷歌浏览器具有键绑定 Ctrl - - 用于减小字体大小,而 Ctrl - + 用于增加字体大小。我想阻止他们。我发现他们必须<body>,我做了:

document.body.addEventListener('keyup',
  function(obj, e){e.preventDefault();}, false);

但似乎在事件发送给这些处理程序之前触发了/减少字体大小,并且在运行preventDefault()时,它们已经完成,我的尝试失败了。如何防止这些默认绑定

致(潜在)downvoters :仔细阅读上述问题。我从未写过我想要完全阻止缩放。我想从我提到的特定键组合中取消绑定这些功能。如果您认为不应该释放 Ctrl - - ,那么为什么Ace editor将emacs键绑定与 Ctrl - < kbd> - 绑定撤消?您是否声称Ace编辑器的开发人员(包括Mozilla Firefox开发人员等)正在做一些无用的事情?你是说你比他们优秀吗?即使你的建议不是这样做,为什么还要投票而不是把它作为答案呢?

2 个答案:

答案 0 :(得分:2)

如果绑定到keydown事件并使用e作为第一个参数,则此代码将起作用:

document.body.addEventListener('keydown', function(e) {
    e.preventDefault();
}, false);

Demonstration

请注意,此方法无法禁用浏览器的缩放功能,它只会阻止所有键盘快捷键的默认行为。例如,您仍然可以使用 Ctrl + 鼠标滚轮进行缩放。

答案 1 :(得分:1)

这个使用jQuery并检查是否:按下 Ctrl 键并按下 + / - 按钮。

$(document).keydown(function(e) {
    if(e.ctrlKey
       && (e.which == 107 || e.which == 109 || e.which == 187 || e.which == 189))
    {
        e.preventDefault();
        return false;
    }
});