Почему event.bubbles имеет значение false для "focusin" и "focusout"?
Пару минут назад я ответил на вопрос:
В чем разница между фокусировкой / фокусировкой и фокусом / размытостью в jQuery?
Ответ был:
Короткий ответ: focusin
пузырьки, focus
не. focusout
пузырьки, blur
не.
Я проверял это, это правда, но я столкнулся со странной вещью, пытаясь настроить DEMO:
$('#test').on('focusin focusout focus blur change', function(e) {
console.log(e.type + 'event bubles? : ' + e.bubbles);
});
focusin
а также focusout
дай мне e.bubbles == false
Это ошибка JQuery или я упускаю очевидное здесь?
1 ответ
Похоже, ошибка в JQuery. Вы тестировали это в браузере, который поддерживает focusin
а также focusout
изначально? (Например, IE?) Потому что, если нет, вы проверяете флаг для эмулируемой поддержки jQuery.
Выше я вычеркнул "Звучит как ошибка", потому что jQuery не претендует на нормализацию bubbles
собственность в документации. Так как он не гарантирует этого, он не должен поддерживать его в эмулируемых событиях. (Обратите внимание, что если я запустил вашу демонстрацию на IE7, я получу undefined
потому что IE7 не поддерживает события DOM3 bubbles
свойство.) Еще проблема, но, возможно, не ошибка.:-)
Обновление:
Ответ на тикет jQuery:
Документация не претендует на нормализацию свойства event.bubbles. Вы можете найти его в event.originalEvent, но это будет то, что предоставлено платформой, ненормализовано.
Так что мое предположение выше было верным. Это не ошибка, потому что они не утверждают, что нормализуют это.:-)