?

Log in

No account? Create an account
   Journal    Friends    Archive    Profile    Memories
 

IE vs jQuery - morfizm


Apr. 13th, 2011 09:06 am IE vs jQuery

За последнее время наблюдаю уже двух людей, которые говорят, что писать сайты, чтобы они работали на IE - немеренный гемор, и, типа, IE говно. Причём оба они используют jQuery. Подумалось (естественная идея) - может, просто jQuery - говно?

Когда я писал сайты (6-9 лет тому назад), немеренный гемор был заставить их работать в Опере. Комбинация из IE+FF требовала +20% работы, чтобы работало на обоих, вне зависимости от того, какой из browser'ов у тебя основной. А Opera требовала ещё +150%. Я не использовал jQuery, но писал много JavaScript'а вручную.

11 comments - Leave a commentPrevious Entry Share Next Entry

Comments:

From:ermouth
Date:April 13th, 2011 04:38 pm (UTC)
(Link)
Дима, как раз jQuery избавляет практически от всех геморроев, связанных с ИЕ. Очень мало когда jQuery работает на ИЕ не так, как на других браузерах. Я наталкивался всего дважды на моей памяти -- и то там были довольно экзотические случаи, связанные с поведением ячеек таблиц в ИЕ.

Но вот от иешных чудес типа зарезервированности некоторых идентификаторов, которые к стандарту не имеют никакого отношения, типа неадекватного наследования цсс-атрибутов, невозможности привязать события к объектам с background:transparent в ИЕ9 не спасёт никакой jQuery. Ну и последний глюк -- который ты же и обнаружил -- просто прямо противоречащий стандарту hoisting --это тоже чисто иешное.

С оперой единственный серьёзный гимор, который остался до сих пор -- это то, что она начинает рендерить контент во время исполнения цикла. Это в самом деле редко становится проблемой, но уж если становится -- то просто здец. Это выглядит как дергающаяся туда-сюда во время рендера верстка.

Так что не надо гнать на жэкваери -- это одна из самых удачных вебовых библиотек, что я видел. Её даже мсфт юзает.

А ИЕ -- криве гэ. Мне очень странно, что так вышло -- ИЕ 5.5 с его XMLHttpRequest был совершенно прорывным, и всё преимущество бездарно проёбано.
From:morfizm
Date:April 13th, 2011 04:48 pm (UTC)
(Link)
"Так что не надо гнать на жэкваери"

Ну я и не гнал, просто высказал предположение, основанное на использовании этой библиотеки ровно у тех двух людей, которые гнали на IE :)

Спасибо за развёрнутый ответ.
Про background:transparent я помню, и последний глюк тоже. Мне вообще несколько удивляет позиция MSFT в отношении подобных багов. Со стороны так кажется, что они гонятся за UI-фичами самого браузера плюс за использованием крупных технологий, но при этом не придают должного значения маленьким багам, которые extremely annoying для многих.

"С оперой единственный серьёзный гимор, который остался до сих пор -- это то, что она начинает рендерить контент во время исполнения цикла."

О, это я тоже помню. Кажется, чинил это тем, что рендерил с выключенной видимостью, а потом её включал, или, может, рендерил в памяти, а потом вставлял весь объект. Уже не помню деталей. Но я также боролся с обратным гемором в IE & FF: как заставить их рендерить такие штуки как "прогресс" или анимацию, если они такие умные и всё кэшируют.
From:ermouth
Date:April 13th, 2011 05:52 pm (UTC)
(Link)
крупные технологии, говоришь? геолокации в ИЕ9 нет, к примеру.

выключать видимость или рендерить в неприсоединённое к странице дерево очевидное решение -- но не всегда хорошее. я столкнулся с неудобствами вот в какой ситуации.

у меня была огромная -- тысячи строк -- таблица с кучей колонок, с colspan'ами и сложным контентом в ячейках, да ещё и с приаттаченными событиями. мне надо было пройтись только по некоторым ячейкам (даже по некоторым дивам в ячейках) и кое-что там подправить, довольно существенно.

отключение видимости на время рендера -- не вариант сразу.

создание аккуратного клона такого дерева в памяти тоже не вариант, это медленно (невыносимо медленно на мобильных устройствах) и требует много памяти (для десктопов некритично, а вот для тощих нетбуков и айфонов уже неприятность).

в результате я решил, конечно, проблему для оперы, но пришлось немножко повозиться.
From:morfizm
Date:April 13th, 2011 06:11 pm (UTC)
(Link)
А как ты решил проблему для оперы? Нашёлся какой-то "баг", позволяющий заставить оперу не рендерить во время изменений? Или позволяющий сделать так, чтобы этот рендеринг не сильно тормозил, и не менял layout?
From:ermouth
Date:April 13th, 2011 06:22 pm (UTC)
(Link)
я не совсем корректно выразился -- я решил проблему С оперой, а не ДЛЯ неё.

обычным в таких случаях способом -- цикл разбивается на куски, каждый из которых по завершению запускает следующий через setTimeout с коротенькой задержкой. оптимизатор рендера, если циклы недлинные, запускает репэйнт именно в эти промежутки.

это немного замедляет работу и в других браузерах -- но субъективно не ощущается, потому что не вся таблица видна целиком в окошке.
From:_navi_
Date:April 13th, 2011 05:03 pm (UTC)
(Link)
Ну, скажем так, когда я писал под веб, никаких jquery сначала и не было, а проблем с IE было много. JQuery появилось позже и оно действительно избавляет от многого геморроя с IE.
From:morfizm
Date:April 13th, 2011 06:11 pm (UTC)
(Link)
Понятно. Видимо проблемы с IE меня как-то обошли.
From:dshel
Date:April 13th, 2011 05:56 pm (UTC)
(Link)
IE совершенно объективно ругают за неадекватную поддержку Веб-стандартов.

Это уже стало нормой, - в папке css иметь что-то типа ie_hacks.css :)
From:me_milady
Date:April 14th, 2011 03:31 am (UTC)
(Link)
тот факт, что 2 человека которые пожаловались на IE ещё и используют jQuery объясняется просто: сейчас _все_ используют jQuery :)))
From:me_milady
Date:April 14th, 2011 03:33 am (UTC)
(Link)
буквально на прошлой неделе сотрудник писал: "менеджер спросил - а у тебя в проекте ХХХ используется jQuery? он - нет. менеджер: - а почему?" - единичный случай, но уже понятно какова общая тенденция )
From:morfizm
Date:April 14th, 2011 06:39 am (UTC)
(Link)
OK:)