В JavaScript возможно ли в IE зарегистрировать один прослушиватель событий для захвата всех событий изменения, фокуса и размытия на странице?

  • In non-IE browsers:
    • The change event bubbles, so you can catch it when it gets to document in the bubbling phase.
    • События focus и blur не всплывают, но вы можете перехватить их на этапе захвата с помощью одного прослушивателя событий на document.
  • On IE:
    • None of those 3 events bubble (including the change event, which is not spec compliant).
    • В IE нет фазы захвата.

Итак, насколько я знаю, единственный способ в IE — зарегистрировать прослушиватель событий для change, focus и blur в каждом элементе управления формой. Эта операция может быть дорогостоящей, если у вас много элементов управления. Но есть ли лучший способ?


person avernet    schedule 09.02.2010    source источник
comment
К сведению: focus и blur не всплывают, IE дает вам focusin и focusout (соответственно), которые всплывают и могут быть надежно заменены. См. quirksmode.org/blog/archives/2008/04/delegating_the.html   -  person Crescent Fresh    schedule 09.02.2010
comment
И не будет события change для элемента input без предшествующего события focusin. Таким образом, в IE вы можете прослушивать focusin, а затем прикреплять обработчики событий change непосредственно к цели события. Я предполагаю, что именно так библиотеки подделывают это.   -  person Sean Hogan    schedule 09.02.2010


Ответы (1)


jQuery 1.4 определяет «фокусировку» и «фокусировку» для захвата событий фокусировки и размытия для всех браузеров.

person Randal Schwartz    schedule 09.02.2010
comment
1.4 также имитирует событие change, которое всплывает. - person Crescent Fresh; 09.02.2010