2016-03-22 3 views
-1

Я заметил, что код Javascript, кажется, написан для чтения нажатий клавиш совершенно по-разному, и я думаю, это поддержка разных браузеров. Например, вот один блок кода с веб-страницы:Какие браузеры используют систему ключевых событий?

if (document.addEventListener) 
{ 
    document.addEventListener("keydown",keydown,false); 
    document.addEventListener("keypress",keypress,false); 
    document.addEventListener("keyup",keyup,false); 
    document.addEventListener("textInput",textinput,false); 
} 
else if (document.attachEvent) 
{ 
    document.attachEvent("onkeydown", keydown); 
    document.attachEvent("onkeypress", keypress); 
    document.attachEvent("onkeyup", keyup); 
    document.attachEvent("ontextInput", textinput); 
} 
else 
{ 
    document.onkeydown= keydown; 
    document.onkeypress= keypress; 
    document.onkeyup= keyup; 
    document.ontextinput= textinput; // probably doesn't work 
} 

Судя по этому коду казалось бы разные браузеры имеют совершенно различные клавиатурные механизмы обработки. Какому из перечисленных механизмов соответствует браузер (ы)?

+0

Прочитать MDN: [addEventListener] (https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) – epascarello

+0

События, которые вы указали там в коде, не идентичны вообще, они получили разные цели: http://stackoverflow.com/questions/3396754/onkeypress-vs-onkeyup-and-onkeydown – Jonast92

+0

http://quirksmode.org/js/introevents.html. В принципе, все неархаичные браузеры поддерживают стандартный 'addEventListener' в эти дни. – Bergi

ответ

1

addEventListener поддерживается:

  • Все современные браузеры (включая Microsoft Edge, и IE9-IE11, когда не в их режиме разбитого "совместимости")
  • Почти все старые браузеры, которые не являются от Microsoft

attachEvent поддерживается только старыми браузерами от Microsoft (или IE9-IE11 при работе в режиме «совместимости»).

Стиль document.onkeydown = не нужен в любое время этого столетия, это был серьезно старый механизм (который все еще работает) от IE5.5.