如何捕获网络上的击键?

时间:2010-12-26 04:39:39

标签: php javascript function input keystroke

使用PHP,JS或HTML(或类似的东西)我如何捕获keystokes?例如,如果用户按下ctrl + f或者甚至只是f,则会发生某种功能。

++++++++++++++++++++++++ EDIT +++++++++++++++++++ 好吧,这也是正确的,因为我无法让它发挥作用。我为我的n00bness道歉这是一个简单的问题,jQuery的新手,还在学习越来越多的JS。

<script>    
var element = document.getElementById('capture');
    element.onkeypress = function(e) { 
       var ev = e || event;
       if(ev.keyCode == 70) {
          alert("hello");
       }
    }
</script>
<div id="capture">
Hello, Testing 123
</div>

++++++++++++++++ EDIT ++++++++++++++++++

这是一切,但我无法让它发挥作用:

<link rel="icon" href="favicon.ico" type="image/x-icon">
<style>
* {
margin: 0px
}  

div {
    height: 250px;
    width: 630px;
    overflow: hidden;
    vertical-align: top;
    position: relative;
    background-color: #999;
}
  iframe {
    position: absolute;
    left: -50px;
    top: -130px;
  }
</style>
<script>
document.getElementsByTagName('body')[0].onkeyup = function(e) { 
   var ev = e || event;
   if(ev.keyCode == 70 && ev.ctrlKey) { //control+f
      alert("hello");
   }
}
</script>
<div id="capture">
Hello, Testing 123<!--<iframe src="http://www.pandora.com/" scrolling="no" width="1000" height="515"frameborder="0"></iframe>-->
</div>

+++ +++ EDIT

感谢雅各布,我原以为我已经修好了,但是当我在FF和IE中尝试它(目前使用的是chrome,它确实有效)时它没有用。这个脚本只是用于我将看到的个人页面,所以这不是最大的交易,但为了将来参考,我只想知道为什么这在IE或FF中都不起作用。

4 个答案:

答案 0 :(得分:11)

当然,唯一的方法是通过JavaScript,你可以这样做:

window.onload = function() {
   document.getElementsByTagName('body')[0].onkeyup = function(e) { 
      var ev = e || event;
      if(ev.keyCode == 70) {//&& ev.ctrlKey) {
         //do something...
      }
   }
};

要查找所需的特定密钥代码,请参阅此文章:http://www.webonweboff.com/tips/js/event_key_codes.aspx

jsFiddle example

答案 1 :(得分:1)

您正在寻找与按键相关联的javascript事件。这里有一些恼人的浏览器不兼容性,所以你最好使用像jQuery这样的JS库,你可以使用jQuery keypress()方法,但是你可以从javascript onkeypress事件中获得你想要的数据。

答案 2 :(得分:0)

使用jQuery:

您可以使用jQuery Keydown

执行此操作

关于捕获不同关键事件的精彩文章:

Working with Events in jQuery

修改

<强>的JavaScript

以下是使用精美DEMO在javascript中执行此操作的好文章:

答案 3 :(得分:0)

最好是捕捉窗口上的所有键,而不是捕捉特定元素上的击键,如其他所提到的答案。

所以使用原生javascript:

window.onload = function (){
 eventHandler = function (e){
    if (e.keyCode == 70 && e.ctrlKey)
    {
      //do stuff
      //console.log(e);
    }
  }

  window.addEventListener('keydown', eventHandler, false);
}

使用JQuery:

$(document).ready(function(){
  $(window).keydown(function (e) {
    if (e.keyCode == 70 && e.ctrlKey)
    {
        //do stuff
    }

  });
});