模拟用按键调度按下的键盘键

时间:2014-03-08 20:34:31

标签: javascript keypress dispatchevent

有人可以帮我解决这个问题。我正在尝试模拟网页的键盘输入,而没有专门指定要将其发送到的控件。我试图通过createEvent和dispatchEvent这样做。但是当我收到实际的keypressed时,事件没有任何对该字符的引用。 charCode,keyCode始终为0.

感谢您的帮助! 最大

<html>
<body> 
    <button type="button" onclick="KeyPressInject('e')">TEST</button>
</body>

<script type="text/javascript">

addEventListener("keypress", function(event){ EventKeyPressed(event)}); 

function KeyPressInject(letter)
{
    var evt = document.createEvent("KeyboardEvent");
    Object.defineProperty(evt, 'keyCode', { 
                         get : function() {
                                 return this.keyCodeVal;
                         } });      
    evt.initKeyboardEvent ("keypress", true, false, window, false, false, false, false, letter, letter); 
    var canc = !window.dispatchEvent(evt);
}

function EventKeyPressed(event)
{
    console.log("Key Pressed " + event.charCode);
}   
</script>
</html>

1 个答案:

答案 0 :(得分:0)

请看看这是否有帮助,我准备了一个简单的小提琴: Basically it triggers a keypress event

你给它角色和要射击的元素:

simulateKeyPress("e", 'body');

它与您的代码不同,它需要定义通过which属性按下的字符。