【问题标题】:How can I keep the browser from intercepting and interpreting keys如何防止浏览器拦截和解释密钥
【发布时间】:2016-01-13 12:26:02
【问题描述】:

我希望击键触发一些 javascript 代码。我找到了Capture key press without placing an input element on the page?,它可以正常工作,只是浏览器也会收到这些击键,并且会做很多不需要的事情,例如,它会启动“快速查找”并转移焦点。

那么我怎样才能告诉浏览器忽略特定窗口的一系列键呢?

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    通常通过在 keydown 事件处理程序中使用 return false 足以防止默认浏览器行为。例如:

    window.onkeydown = function(event){
        var keyCode = event.keyCode;
        if (keyCode == 13) {    //prevent enter key from being detected
            return false;
        }
    }
    

    键码参考:https://css-tricks.com/snippets/javascript/javascript-keycodes/

    【讨论】:

    • 有效! +1 链接到关键代码。但是你能解释一下 return false 到底是做什么的吗?它不会阻止事件进一步冒泡吗?
    • 嗯,前几次尝试成功,但现在快速查找再次打开。令人困惑。将不得不试验一段时间。
    • return false 通常会指示浏览器忽略该事件,但是为了安全起见,您可以添加 event.preventDefault() 和 event.stopPropagation() 如果它们存在
    • 看起来它适用于 keydown,但不适用于 keyup,但我第一次看到了什么?令人困惑。
    • 应该可以这样做 window.onkeydown = window.onkeyup = function(event)...
    猜你喜欢
    • 2017-05-04
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2015-10-05
    相关资源
    最近更新 更多