Перейдите на страницу входа в Twitter и введите в консоли следующее:
window.addEventListener('keypress', function(e){console.log('hello')}, true)
(ПРИМЕЧАНИЕ: как третий параметр установлен на true
, который позволяет захватывать события. Это приводит к тому, что события сначала перехватываются окном перед тем, как его потребляет дочерний элемент.)
Попробуйте нажать несколько клавиш. Обратите внимание, что hello
не выводится на консоль. Добавление прослушивателя событий для keydown
или keyup
ничего не меняет.
hello
будет отображаться на большинстве веб-сайтов, но не на таких сайтах, как Twitter или Gmail.
Почему? Что останавливает прослушиватель событий?
EDIT: Кажется, работает в Firefox. Но не Chrome. Почему Chrome не запускает прослушиватель событий, как ожидалось?
ИЗМЕНИТЬ 2: Как показано несколькими людьми ниже, console.log
является пустой функцией в Chrome для таких сайтов, как Twitter и Gmail. Почему это?