Ну конечно, всяк кулик своё болото хвалит :) У M$ свои мысли и доводы, а об истинных причинах мы можем только гадать.
Конкретно по этому вопросу — мне понравилось одно из предложений в комментариях ввести некоторый промежуточный элементарный исполняемый код, в который можно компилировать из других языков.
Но как уже было сказано здесь же в комментариях, интернет сегодня довольно инертный ко всем нововведениям, особенно в корпоративном плане (и это, кстати, вполне также относится и к Европе). Поэтому при корпоративной разработке приходится ещё и на IE6 оглядываться, что весьма печально. Хорошо, хоть сейчас уже соглашаются повесить для IE6 заглушку с текстом об устаревшем браузере, а не требуют совместимости.
Был уже когда-то vbscript. Тоже кому-то не понравилось делать как все, а захотелось своего, и аргументы, наверняка, были… Хотя против Dart я ничего не имею, как и за него.
А у меня вообще два скролла на мышке. Один крутит как обычный, а второй в два раза быстрее. Так что «1 всегда» — это тоже не лучший вариант. Для конкретно этого примера с выбором цвета ещё может быть и пригодный, но если требуется скроллить контент на странице — то не вариант.
У меня есть скрипт ~20мб, в котором просто декларирование трёх больших массивов со строками и числами. Если его подключать просто через создание тега script, то исполнение кода занимает около 3 сек с блокированием на это время GUI. Если делать через воркер: запустить воркер, внутри вызвать importScripts() и выдать «наружу» только данные, то время до готовности увеличилось вдвое — 7-8 сек, но при этом GUI блокируется только в самом конце на 1-2 сек, когда приходит ответ от воркера. Так что в моей ситуации воркеры практически не помогли.
P.S.
Тестировал в Chrome 15 с файловой системы (вообще без веб-сервера), так что временем загрузки скрипта можно пренебречь.
20мб — это большой и довольно редкий случай, для мелких объёмов время до готовности тоже удваивается, а критичного времени блокирования GUI для них нет — поэтому для них ситуация даже ухудшилась.
А ещё можно сказать, что воркеры не просто позволяют передавать любые объекты, а ещё их клонируют. Поэтому если передавать большой объём данных между потоками, то будет заметное блокирование GUI браузера в момент приёма данных от воркера.
Второй вариант работает абсолютно так же, как метод .live(), а первый — как обычный .bind(). Если знаете подробности — то вот она разница, если нет — то я дал вам подсказку, куда копать.
А они старые методы никуда не дели. Пока что .bind(), .delegate(), .live() остаются, но не рекомендуемы, а .click() и прочие т.п. сокращения так и останутся и далее — их никто отменять не собирается.
Так что замените в вашем примере .delegate() на .on() (даже список параметров менять не надо) и продолжайте подозревать «нечисто» :)
И, кстати, эта ошибка была, видимо, в новой документации, т.к. в старой явно указано на различия .closest() и .parents(), что первый начинает поиск с текущего элемента.
Если исходить из того, что было в 1.5 и что стало в 1.6, то может быть и перемудрили, но вот если бы они так делали изначально — то это было бы правильнее, на мой взгляд, чем было в 1.5. Поэтому они внесли нужные изменения, которые да, вызвали проблемы с переходом на сл. версию, но, ИМХО, изменения нужные.
Между прочим, .delegate() как раз и основан на «свойстве событий в DOM: захват и всплытие» и можно его вызвать на том же body. А от его использования у вас код получится кроссбраузерный (т.е. будет работать и в IE<9) — почитайте описание, я зря ссылку дал что ли?
Конкретно по этому вопросу — мне понравилось одно из предложений в комментариях ввести некоторый промежуточный элементарный исполняемый код, в который можно компилировать из других языков.
Но как уже было сказано здесь же в комментариях, интернет сегодня довольно инертный ко всем нововведениям, особенно в корпоративном плане (и это, кстати, вполне также относится и к Европе). Поэтому при корпоративной разработке приходится ещё и на IE6 оглядываться, что весьма печально. Хорошо, хоть сейчас уже соглашаются повесить для IE6 заглушку с текстом об устаревшем браузере, а не требуют совместимости.
P.S.
Тестировал в Chrome 15 с файловой системы (вообще без веб-сервера), так что временем загрузки скрипта можно пренебречь.
20мб — это большой и довольно редкий случай, для мелких объёмов время до готовности тоже удваивается, а критичного времени блокирования GUI для них нет — поэтому для них ситуация даже ухудшилась.
Наверняка и на хабре уже про них было — пользуйтесь поиском.
document
в наборе — то тоже :).live()
, а первый — как обычный.bind()
. Если знаете подробности — то вот она разница, если нет — то я дал вам подсказку, куда копать..bind()
,.delegate()
,.live()
остаются, но не рекомендуемы, а.click()
и прочие т.п. сокращения так и останутся и далее — их никто отменять не собирается.Так что замените в вашем примере
.delegate()
на.on()
(даже список параметров менять не надо) и продолжайте подозревать «нечисто» :)