2017-02-19 83 views
1

我写了这个简单的“网页”来测试如何检查按键是否被按下。在网站上以编程方式触发密钥

<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.1.min.js"></script> 
 

 
<script> 
 
    window.addEventListener("keydown", function (event) { 
 
     if(event.keyCode == 37){ 
 
      console.log(1); 
 
     } 
 
     if(event.keyCode == 39){ 
 
      console.log(2) ; 
 
     } 
 
    }); 
 

 
    $(window).trigger("keydown", { which: 37, keyCode: 37 }); 
 
</script>

你可以测试一下:如果你按下右箭头键应该登录1,如果你按左方向键和2。它工作正常。但是,如果我想通过JavaScript以编程方式触发此事件,我将失败。

我发现这个post并测试了窗口,文档和主体DOM对象和“脚本”JQuery对象上的所有方法。

我在做什么错?

+0

你是如何试图触发事件? – motanelu

+0

@motanelu我从后面提到的代码片段插入到我的Chrome控制台中,并将哪个属性更改为37.已尝试将属性更改为“keyCode”,但都没有解决。 –

+0

你需要什么?出于安全目的,大多数浏览器不允许触发密钥。看看这个答案:http://stackoverflow.com/questions/596481/is-it-possible-to-simulate-key-press-events-programatically/19883789#19883789 – motanelu

回答

0

如果您坚持保留window.addEventListener(),请在没有jQuery的情况下触发事件。见the MDN documentation on this

<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.1.min.js"></script> 
 

 
<script> 
 
    window.addEventListener("keydown", function (event) { 
 
     if(event.keyCode == 37){ 
 
      console.log(1); 
 
     } 
 
     if(event.keyCode == 39){ 
 
      console.log(2) ; 
 
     } 
 
    }); 
 

 
    var event = new Event("keydown"); 
 
    event.keyCode = 37; event.which = 37; 
 
    window.dispatchEvent(event); 
 
</script>

+0

谢谢。现在工作。 –