Javascript - 模拟Chrome 53上的关键事件

时间:2016-10-15 21:42:46

标签: javascript google-chrome events keyevent key-events

我正在尝试模拟 Chrome 53 上的关键事件(按)。 我在StackOverflow上找到的所有解决方案似乎都不起作用..

我的目标是拥有一个获得keyCode并使用它来模拟按键的功能 - 需要纯JS

function keyPressSimulate(keyCode) {...?}

我已尝试的代码示例:

Node.prototype.fire=function(type,options){
     var event=new CustomEvent(type);
     for(var p in options){
         event[p]=options[p];
     }
     this.dispatchEvent(event);
}

 document.fire("keyup",{ctrlKey:true,keyCode:90,bubbles:true})

另一个:

presskey:  function(k) {
                var e = new Event("keydown");
                e.keyCode= k;
                e.which=e.keyCode;
                e.altKey=false;
                e.ctrlKey=true;
                e.shiftKey=false;
                e.metaKey=false;
                document.dispatchEvent(e);
            }

var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", shiftKey : true});
global.document.dispatchEvent(e);

presskey:  function(k) {
            var keyboardEvent = document.createEvent("KeyboardEvent");

            var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";


            keyboardEvent[initMethod](
                               "keydown",
                                true,      // bubbles oOooOOo0
                                true,      // cancelable
                                window,    // view
                                false,     // ctrlKeyArg
                                false,     // altKeyArg
                                false,     // shiftKeyArg
                                false,     // metaKeyArg
                                k,
                                0          // charCode
            );

            global.document.activeElement.dispatchEvent(keyboardEvent);
         }

1 个答案:

答案 0 :(得分:1)

{@ 1}}属性已弃用,使用专用keyCode

时无法设置

但是,您可以使用自定义事件并将您想要的任何属性设置为2步操作(如果在构造函数中使用它将被忽略):

KeyboardEvent

根据评论进行修改 从针对文档中特定元素的用户交互触发事件。

例如,用户按键盘上的键是一系列事件(keydown,keyup,keypress)。其中一些被浏览器捕获以填充输入字段的值,然后它们作为事件传输到Javascript。除了手动执行操作之外,没有可行的方法来模拟用户从Javascript沙箱中命中密钥(1)检测焦点位置,(2)根据默认浏览器行为更新焦点元素的属性,以及然后(3)触发目标元素上的相应事件。