Keydown EventListener не работает в IE7 (Javascript) - PullRequest
1 голос
/ 16 декабря 2009

Я написал этот код внутри тегов HEAD моей HTML-страницы. Он отлично работает в FF, Chrome и Safaria, но не в IE7. Я хотел бы знать, как это исправить.

<script type="text/javascript">
if ( window.addEventListener ) {
  window.addEventListener("keydown", function(e) {
    alert(e.keyCode);
  }, true);
}
</script>

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 16 декабря 2009

Вы облажались: вы используете захват событий (передача true в качестве последнего параметра addEventListener). IE имеет нет такого эквивалента, в любой версии, включая IE8 в режиме IE8.

Есть ли причина, по которой вы должны использовать захват событий, а не всплывание событий здесь? IOW, передайте false как ваш последний параметр? Затем вы сможете портировать это (несколько) для использования проприетарного метода IE attachEvent или использовать библиотеку (как другие предлагали и добавляли ссылки для нее).

2 голосов
/ 16 декабря 2009

Microsoft реализовала свой собственный способ, называемый attachEvent. Вы можете прочитать больше об этом на quirksmode.org: http://www.quirksmode.org/js/events_advanced.html

2 голосов
/ 16 декабря 2009

В IE нет window.addEventListener, вам нужно использовать attachEvent. Есть хорошая документация о событиях здесь , или вы можете переключиться на использование библиотеки, которая абстрагирует различия браузера.

1 голос
/ 16 декабря 2009

Попробуйте:

window.attachEvent

Более подробно:

//set page event handlers
if (window.attachEvent) {
//IE and Opera
window.attachEvent("keydown", "");
} else if (window.addEventListener) {
// IE 6
window.addEventListener("keydown", "");
} else {
//FireFox
document.addEventListener("keydown", "");
}
...