2012-05-14 3 views
8

Пару минут назад я ответил на вопрос:
What is the difference between focusin/focusout vs focus/blur in jQuery?Почему event.bubbles ложно для «focusin» и «focusout»?

Ответ был:

Короткий ответ: focusin & thinsp; & thinsp; & thinsp; пузыри, focus не делает.
              focusout пузыри, blur & thinsp; не.

Я испытал это, это правда, но я столкнулся странные вещи при попытке создать DEMO:

$('#test').on('focusin focusout focus blur change', function(e) { 
    console.log(e.type + 'event bubles? : ' + e.bubbles); 
});​ 

focusin и focusout дать мне e.bubbles == false

Является ли это ошибка в JQuery или я пропускаю здесь очевидное?

+0

False/false в Chrome 18 (в случае, если вы хотите, чтобы некоторые заметки о браузере ...) – jmar777

ответ

4

Звучит как ошибка в jQuery. Вы проверили это в браузере, поддерживающем focusin и focusout изначально? (Например, IE?). Если нет, вы тестируете флаг для эмулируемой поддержки jQuery.

Я вычеркнул «Звуки как ошибка» выше, потому что jQuery не утверждает, что нормализует свойство bubbles в документации. Поэтому, поскольку он не гарантирует этого, он не должен поддерживать его в эмулируемых событиях. (Обратите внимание, что если я запускаю вашу демоверсию в IE7, я получаю undefined, потому что IE7 не поддерживает свойство DOM3 Events bubbles.) Еще проблема, но, возможно, не ошибка . :-)


Update:

Ответ на the jQuery ticket:

документация не претендует на нормализуют собственность event.bubbles. Вы можете искать его в event.originalEvent, но это будет то, что предоставила платформа, ненормализованная.

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

+1

Протестировано с 'chrome' – gdoron

+0

WOW Я нашел ошибку в jQuery, есть ли там значок? Я собираюсь мета ... :) – gdoron

+0

@gdoron: Просто права бахвальства. :-) –