繁体   English   中英

keydown在Firefox中不起作用

[英]keydown not working in firefox

 <script>
        function MoveNext(e, obj) {

            if (!e) var e = window.event;

            if (e.keyCode) code = e.keyCode;

            else if (e.which) code = e.which;
            if (code == 13) {

                document.getElementById(obj).focus();

                return false;
            }
   </script>

上面的代码在IE中有效,但在mozilla中不起作用,为什么

确切地说,返回键的最佳代码取决于您正在侦听的键盘事件(按下键,按下键,按下键)。 对于按键,您可以这样操作:

function MoveNext(e, obj) {
    e = e || window.event;
    var code = e.which || e.keyCode;
    if (code == 13) {
        document.getElementById(obj).focus();
    }
}

注意:我已经删除了局部变量e所以它不会与参数e混淆,并且我已将code定义为局部变量,而您将其作为隐式全局变量使用(从来都不是一件好事)。

此处介绍了有关跨浏览器键处理的更多信息: keycode和charcode

更改

if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;

code = (e.keyCode)? e.keyCode: e.charCode;

并确保在调用事件时将事件传递给moveNext,因为只有在从函数显式发送事件后,firefox才能识别事件。

同样,如果您正在做keydown的对象是一个div,则将tabindex设置为0,这样它就可以获取焦点。

<div id="mydiv" tabindex="0"></div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM