Почему 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, но это будет то, что предоставлено платформой, ненормализовано.

Так что мое предположение выше было верным. Это не ошибка, потому что они не утверждают, что нормализуют это.:-)

Другие вопросы по тегам