-
Трудности разработки
Есть такой браузер (не будем тыкать пальцем), который при работе над проектом постоянно старается испортить тебе жизнь. В случае с проектом rocon таким браузером оказалась Opera.
Сначала она упорно не хотела показывать половину созданных уголков, прочухивалась только тогда, когда я переключался между окнами либо скроллил документ (ау, Опера! такие баги тянутся еще с 7 версии). Чтобы исправить это, нужно было вызвать repaint всего документа. Самым безобидным оказалось такое решение:
document.documentElement.style.outline = 'none';
Но, как оказалось, это было только началом эпической ебли с браузером. Решил проверить работу библиотеки на существующем проекте: добавил где-то 50 блоков на один из своих сайтов. Во всех браузерах уголки создавались где-то за 0,6 секунды. Проверил в Опере — 23 секунды. Около часа понадобилось чтобы найти проблемное место: оказалось, что на скорость повлияло свойство
overflow: autoу одного из родительских элементов. Когда я его убрал время создания снизилось в 2—3 раза (не помню точно, на сколько именно, но прирост в скорости был существенным). На тот момент я немного подзабил на rocon, так как было много важных дел. Сегодня решил продолжить работу и начал с попытки воссоздать ту ситуацию сoverflow, чтобы найти решение проблемы. У меня ничего не вышло: обычный родительский блок сoverflow: autoдавал ту же скорость, что и блок без него. Вероятно, проблема в макете сайта «дополнялась» другими элементами и стилями, разбираться в которых было лень (там HTML и CSS-кода килов на 200).До истинной (как мне кажется) сути проблемы допер совершенно случайно, потратив еще минут 30 драгоценного времени. Я уже знал, что узким местом в rocon являлось получение текущего значения CSS-свойств элемента через
getComputedStyle(). Проблема оказалась в следующем: тормозит одновременная модификация дерева документа (создание новых элементов) и получения стиля. То есть если разбить один цикл на два — сначала создаем все элементы, потом получаем их свойства — все работает замечательно. Для любопытствующих выложил пример.И эти люди обвиняют Майкрософт в том, что IE тормозит развитие интернета.
20 комментариев

К десятой версии вроде обещают новый JavaScript-движок.
Давно слежу за Оперой, и, если честно, не впечатляет. То косяки со шрифтами, то вот теперь с JS.
Непонятно одно: почему они не уделяют больше внимания этим вещам до сих пор?..
> И эти люди обвиняют Майкрософт в том, что IE тормозит развитие интернета.
еще замечал переодическое исчезновение из селектов в 9.26
Вот как бы так эту библиотеку переписать ещё под разные другие библиотеки, в которых уже кое-что есть готовое, типа domready, hasClass и многого другого. Тогда меньше 13K получится. Всё равно jquery или mootools приходится использовать.
Проблемы с репаинт/рефлоу есть не только у оперы (хотя и ярко выражены именно у нее), например, у FF3 с ее новым рефлоу-движком тоже появились проблемы (в отличие от FF2). Я в день выхода FF3 заапрувил им баг, до сих пор чинят
Блять, поля перепутал
У меня есть своя теория на этот счет. Опера действует по схеме «русский пиар» (это когда денег на рекламу тратится больше, чем на производство, получая соответствующий результат). Примеров можно привести массу: начиная от лживых заявлений о самом быстром браузере в мире, заканчивая их форумом, переполненным сообщениями о том, что в новой версии сломалось то, что работало в предыдущей.
Никакой выгоды от этого не будет. Во-первых, не все используют эти фреймворки (некоторые используют самописные). Во-вторых: фреймворков очень много, поэтому одни только проверки займут такой же объем кода.
В gzip-е весит 4 КБ
Согласен.
Если я не ошибаюсь, они ­ внедрили только в третьей версии, хотя в багтрекере запись висела еще с 0.x версии
Опера хороша гибко настраиваемым интерфейсом, а как браузер регулярно доставляет проблемы.
Субъективно «отзывчивость» интерфейса оперы и скорость отрисовки страницы может произвести впечатление быстрого браузера.
Но сильнее всех тормозит развитие интернета все-таки интернет эксплорер (по крайней мере 6-й), по сути он является якорем, брошенным лет 5-6 назад и до сих пор не дающий двигаться вперед.
Развитие интернета тормозит W3C, которая по пять лет не может спецификации утвердить
Ну а если по факту, задумайтесь на минутку, почему куча народу еще не перешла на IE7, который уже несколько лет висит в апдэйтах?
Потому что с ворованным виндовсом они не устанавливают обновлений
Я других причин просто не вижу.
Вы правы — это одна из причин
Вторая — корпоративный сектор. Крупные корпорации, как правило, пользуются решениями MS для организации делопроизводства. Среди решений есть и те, которые активно используют IE и его компоненты. А теперь представьте, что MS начинает штамповать новые версии браузера так же, как это делает Opera. И из-за одной такой версии вдруг ломается корпоративный интранет, потому что где-то в браузере что-то не то подкрутили. И во всех этих компаниях в тысячи компов парализуется работа. Поэтому некоторые админы не все апдэйты пропускают в сеть.
а баг репорт отправлен?)
щас сделаем
http://www.highscore.de/SVG_roundies/
За наводку спасибо, но библиотека страдает теми же болячками, что DD_roundies.
> Во-вторых: фреймворков очень много, поэтому одни только проверки займут такой же объем кода.
Нет, я имел в виду что-то вроде плагинов под несколько самых известных библиотек. Вот я, например, пользую mootools. Наверное можно же автоматически генерить «плагины» из каждой новой версии кода (если мы предполагаем, что API библиотек особо меняться не станет). Либо чтобы сами библиотеки включили ваш код в качестве плагина, если дадите разрешение.
Блин, мы стремительно движемся к «компиляции» JS-кода под разные «платформы». Вот уже и аналог autotools для эклипса вырисовывается. Хотя иметь встроенный в браузеры, например, jquery cвежей версии было бы неплохо.
Можно сделать даже сейчас, если взять исходный код. Достаточно переписать некоторые методы из common.js и пересобрать библиотеку. В принципе, на то он и Open Source, чтобы дописывать необходимый функционал. Я могу написать плагин для jQuery, кто-то для prototype, кто-то для mootools.
Пусть включают, мне не жалко
Только пока о ней особо никто не знает. Я надеюсь в ближайшее время выпустить новую версию библиотеки и написать документацию на английском.
Обидно читать, как хают любимый браузер((
А если серьезно, имхо, он удобней остальных. Со мной, думаю, многие согланы.
Это критика в первую очередь разработчикам и пиарщикам Оперы. Как к инструменту для навигации по интернету ничего не имею против — действительно удобный браузер. А как у разработчика сайтов у меня очень много претензий к «самому быстрому» и «самому лучше всех поддерживающего стандарты» браузеру у меня очень много претензий. Вот, из недавнего, почитайте, на что приходилось тратить время разработчикам Яндекса.
Тема обращения в DOM и стилей была затронута Келли Нортоном:
Measure in Milliseconds: Performance Tips for Google Web Toolkit
http://code.google.com/events/io/2009/sessions/MeasureMillisecondsPerformanceTipsWebToolkit.html