Chrome中的KeyboardEvent,keyCode为0

And*_*ija 27 javascript google-chrome keydown keyboard-events

我试图在调度的事件对象上设置keyCode.

单击按钮时,会在文本框控件上引发事件以模拟keydown事件.事件成功引发,但keyCode为0.我需要将具有正确keyCode的事件对象发送到文本框.我一直在使用这里的代码.

如何在调度事件中设置keyCode值?

<html>
    <head>      
    </head>
    <body>
        <input type="button" id="btn" value="Click"></input>
        <input type="text" id="txt"></input>
        <script>
            document.getElementById('btn').addEventListener("click", btnClick);
            document.getElementById('txt').addEventListener("keydown", txtKeydown);         

            function btnClick(e) {
                var txt = document.getElementById('txt');               

                var dispatchKeyboardEvent = function(target, initKeyboradEvent_args) {
                    var e = document.createEvent("KeyboardEvents");
                    e.initKeyboardEvent.apply(e, Array.prototype.slice.call(arguments, 1));
                    e.keyCode = 83;
                    e.charCode = 0;
                    target.dispatchEvent(e);
                };

                var canceled = !dispatchKeyboardEvent(txt,
                'keydown', true, true,  // type, bubbles, cancelable
                window,  // window
                's',  // key
                0, // location: 0=standard, 1=left, 2=right, 3=numpad, 4=mobile, 5=joystick
                false, false, false);  // Ctr, Alt, Shift
            }

            function txtKeydown(e) {
                console.dir(e);
                console.log(e.keyCode);
            }

        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Phi*_*nyy 36

我很惊讶这个虫子已经存在了很长时间.似乎有使用通用事件的解决方法.这是一个演示:http://jsbin.com/awenaq/3

  • 这个bug*仍然存在! (9认同)
  • 该bug存在于Google错误跟踪器中很长一段时间:https://code.google.com/p/chromium/issues/detail?id = 327853&q = KeyEvent&colspec = ID%20Pri%20M%20Stars%20ReleaseBlock%20Cr%20状态%20Owner%20Summary%20OS%20Modified (2认同)

Jus*_*tin 9

看起来它有点像你问这个,所以你可能已经找到了你的问题的答案.如果你还没有,那么Webkit中就会出现一个错误,正如在这个SO问题中所指出的那样导致keyCode始终为0.显然,除非他们修复它,否则你无能为力.可悲的是,看起来并不像任何人真的在努力.这不是你想听到的答案,但它确实是任何人现在可以给你的唯一答案.