Как мне регистрировать нажатия клавиш в Интернете? - PullRequest
0 голосов
/ 26 декабря 2010

Используя PHP, JS или HTML (или что-то похожее), как бы я записывал нажатия клавиш? Например, если пользователь нажмет 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 (в настоящее время использующий хром, который работал), это не сработало. Этот скрипт предназначен только для личной страницы, которую увидит только я, так что это не самая большая сделка, но для дальнейшего использования, я просто хотел бы знать, почему это не работает ни в IE, ни в FF.

Ответы [ 4 ]

11 голосов
/ 26 декабря 2010

Конечно, единственный способ сделать это - использовать 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 пример

1 голос
/ 26 декабря 2010

Вы ищете события JavaScript, связанные с нажатиями клавиш.Здесь есть несколько раздражающих несовместимостей браузера, поэтому лучше всего использовать библиотеку JS, такую ​​как jQuery, где вы можете использовать метод jQuery keypress (), но вы можете получить нужные данные из события javascript onkeypress.

0 голосов
/ 26 декабря 2010

Вам лучше захватывать все клавиши в окне, чем захватывать нажатия клавиш на конкретном элементе, как и другие упомянутые ответы.

так, используя нативный 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
    }

  });
});
0 голосов
/ 26 декабря 2010

Использование jQuery:

Вы можете сделать это, используя jQuery Keydown

Хорошая статья о захвате различных ключевых событий:

Работа с событиями в jQuery

РЕДАКТИРОВАТЬ:

JavaScript

Вот хорошие статьи, чтобы сделать это в JavaScript с хорошим DEMO:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...