Обнаружение того, какая клавиша нажата - это хороший способ?

Некоторое время назад я нашел в Интернете простой код... не могу найти для него специальный сайт, но код был создан в 2005 году. Итак, мне стало интересно, хороший ли это способ сделать это:

Это в HTML:

<body onload="document.body.focus();" onkeyup="return keypressed(event)">

Когда ключ нажат, он вызывает эту функцию в JavaScript:

function keypressed(e) {
    var intKey = (window.Event) ? e.which : e.keyCode;
    if (intKey == 13) { // 13 = enter key
        //something happens if the key is clicked
    }
        // here, you can add as many if sentences for key strokes as you want! (same as first)

return true;
}

Я имею в виду, что коду 7 лет (а может и больше!), и я подумал, что он может быть немного или очень устаревшим!

Мои вопросы:

  1. Есть ли лучший способ сделать это или это все еще хороший способ? (Я не хочу использовать jQuery для этого кода, потому что я не хочу использовать его только для одной функции)

  2. Мне действительно нужен этот код: onload="document.body.focus();"? (Я не программировал этот код, поэтому не знаю.)


person Jason Stackhouse    schedule 18.07.2012    source источник


Ответы (2)


Вам не нужен обработчик load, страница уже будет в фокусе после загрузки, и/или если кто-то нажмет enter в любом месте страницы, он тоже будет в фокусе.

Если вам нужен обработчик keyup, зависит от того, что вы хотите с ним делать. Код, который вы показываете, является обработчиком ввода. Если вы хотите, чтобы поле ввода текста реагировало на ввод enter, более эффективно добавить обработчик в это поле.

Кроме того, лучше сделать это из вашего скрипта (часть ненавязчивого javascript использования). Обработчика keypress было бы достаточно, потому что в противном случае значение enter стало бы частью входного значения. Что-то вроде:

[someTextInput].onkeypress = function(e){
  e = e || event;
  if ( (e.which || e.keyCode) === 13 ){
     // do things
  }
}

или вы можете использовать addEventListener/attachEvent (см. здесь).

person KooiInc    schedule 18.07.2012
comment
@Kooilnc Я не совсем уверен, что вы имели в виду в своем коде ... Не могли бы вы показать мне, как это сделать на практике? - person Jason Stackhouse; 19.07.2012

function displayunicode(e){
        var unicode = e.keyCode ? e.keyCode : e.charCode
        alert(unicode)
}

Другой способ сделать то же самое.

person Filipe Manuel    schedule 18.07.2012