Pull to refresh

Comments 80

UFO landed and left these words here
Ага, спасибо! Когда наберётся статистика какая-то, поправлю.
Я вот не могу понять: почему бы разработчикам всех браузеров не сделать поддержку условных комментариев, как в IE?
Да! Я тоже последние года полтора думаю над этим вопросом. Что-то типа

@browser opera and (min-version:9.50) and (max-version: 9.57) {

}
jQuery:
$(function(){
if ($.browser.opera) $('body').addClass('opera');
})

CSS:
.opera h1 { border: 1px solid #F00 }

Быстро-дешево-сердито :)
Это ещё большее извращение, чем CSS-хаки.
На самом деле нужно использовать флаги для фич, а не для браузеров: .m-no-border-radius. Тогда при появлении нового браузера будет достаточно поменять код в одном месте.
Согласен. Мне всё равно не нравится идея использовать для этого два языка.
Наверное потому, что пользователи альтернативных браузеров обновляют их гораздо чаще, чем пользователи IE, да и сам процесс обновления в разы проще.
Если бы всё было так просто, то у меня на сайте не было бы посетителей с FF 1.5 (и даже 0.1!), Opera 7.00 и так далее.
Ну приведите статистику, сколько там людей на FF 1.5 зашло в сравнении с последними версиями? Всегда бывают исключения, всегда найдется пара посещений на каком нибудь IE 5.0, Opera 6.* и прочем. Сейчас люди от поддержки 25+% IE6 то отказываются, что уж говорить про стремящиеся к нулю посещения на старых операх и фаерфоксах.
А какая разница какова статистика, если такие люди есть? Я не «Яндекс», на меня миллионы не заходят, так — 3-4 тысячи. Даже десять читателей могут сделать погоду, если они активные.

Давайте посмотрим статистику сайта Экслера:

Opera 9 — 7,6%
Firefox 2 — 1,2%
Mozilla 1 — 0,5%
Safari 2 — 0,3%
Safari 3 — 0,2%
Opera 8 — 0,1%

берём калькулятор и получаем почти 10% посетителей.
Ну да, высокий процент 9-ой оперы. Много людей еще не успели обновиться. Это нормально когда свеженькая версия вышла сравнительно недавно. Но вот остальные старые версии с их <1% посетителей уже можно не принимать в расчет, иначе сколько же это браузеров должно стоять на компе для тестирования?

Что касается разработки больших порталов, то тут я с вами соглашусь, там имеет смысл, да и бюджет позволяет обычно заморочиться за расширенную поддержку браузеров.
Для интереса глянул количество устаревших браузеров у себя. За вчера — 20,9%.

округляя:
Chrome 3 — 6,6%
Firefox < 3.5 — 9,5%
Opera Mini 1.2 — 0,002%
Opera < 10 — 4,7%

Мой Хром утверждает, что установлена последняя версия 3.0.195.38 (dev-каналами не пользуюсь).
Ага, 3.xx текущая? Ну ок. 6,6% вычёркиваем. Остаётся 14,3%.
Ориентироваться на то, что говорит браузер, кстати, нельзя. FF2 тоже скажет, что установлена последняя версия.
FF 2.0 предлагает обновиться до 3.0.15, FF 3.0 — до 3.5.6 :)
Вот странно, но у меня 3-й не предлагал обновиться до 3.5, пока я сам не поставил. У bionee — тоже.
шутки ради скачал оперу 3.21, просты хтмл прекрасно грузит, но вот посложнее виснет намертво ) хабр не переваривает )
Но раз такие темы как эта возникают, значит необходимость в поддержке нескольких версий таки-есть.
Остаются люди, которым продвинутые знакомые 5 лет назад поставили «нормальный» браузер и они до сих пор им пользуются.
>Наверное потому, что пользователи альтернативных браузеров обновляют их гораздо чащ
Это только усугубляет ситуацию с хаками. Которых, вообще говоря быть не должно.
JS вам в помощь. Добавляем в body класс с именем и версией браузера, и хаки готовы.
(Да я знаю сто не у всех включен js, для таких нужна специальная версия css, сгенерированные на сервере body -классы и т.п)
Зато вариант с js прост в исполнении и поддержке, и редко ломаеться при выходе новых браузеров
Я ждал этой темы. Давайте подумаем вместе. Итак. Как бы вы определили версию «Оперы» на JS :)
Раз никто не пишет, я напишу. Правильный ответ — opera.version(), просто его мало кто знает. navigator.appVersion вернёт для 10-й «Оперы» версию 9.80. Таких приколов в браузерах может появляться всё больше со временем, так что JS не сказать, что какой-то надёжный метод и он обладает своими особенностями.
Вот тут вопрос к разработчикам плавно перетекает из «почему бы не сделать поддержку условных комментариев» в «почему бы, блять, хотя бы не отдавать адекватное значение версии»? :(
«Опера» сделала это по вполне конкретным причинам, у них в блоге есть.
сорри, невнимательно читал ваш коммент, показалось что «opera.version()… …вернёт для 10-й «Оперы» версию 9.80» :(
UFO landed and left these words here
Да это уже всем очевидно, не только Чикуёнку.
W3C это же не один человек. Там, вероятно, есть сторонники и противники.
[на правах фана] Очевидно всем, но есть сторонники, а есть противники :))
UFO landed and left these words here
Разработчики всегда жалуются, это нормально. Если идти исключительно на поводу разработчиков, то будут выходить вещи, вроде MARQUEE, BLINK и FONT. Потому, что это решает конкретную сиюминутную задачу, а не развивает язык и его спецификацию.

Спецификация — это то, как должны работать все браузеры. Если они не работают так, то это исключительно проблемы браузеров, есть куда стремиться. Если для каждого браузера будет своя ветка кода, то пышным цветом расцветут вендорные расширения и никогда уже не будет шансов вернуться к единой поддержке спецификации W3C.
Ну, ты же понимаешь, что стандарты всегда будут впереди браузеров? Или сделаем HTML5/CSS3 в браузерах и W3C можно закрывать?

А это значит, что по версии браузера придётся подключать разные куски CSS в будущем.
Понимаю. Но путь светлой силы — это graceful degradation.
Я чуть ниже дал две хорошие ссылки.
В моей ситуации он не подходит. Я его применяю для Opera < 9.5 — там у меня просто прямоугольник, в Opera 9.5 до < 10.5 я делаю SVG-background через data URI, а в 10.5 и выше — border-radius.
Да, я понимаю, что так можно. Но как же не хочется использовать для этого JS.
UFO landed and left these words here
Да, кстати, а что ещё пророчествует Сергей? :)
Это вообще противоречит идеологии W3C, и на самом деле стоит стремится к тому чтобы не было необходимости определять браузер, а не плести бесконечные вереницы css-стилей для всевозможных типов устройств, версий и разых брендов этих устройств, совта и версий совта, конфигураций этого совта и т.д. Наш «любимый» ИЕ всем в пример, того как это бывает…

п.с. Чикуенок конечно крутой чувак, но почему-то со стороны студии Артема (и тех кто с ней пересекался) постоянно веет недопониманием сути стандартов.

п.с.с. Чувствую сейчас хлебну минусятинки )
UFO landed and left these words here
Ну мне лично просто не по себе когда браузеры ставят выше стандартов…
Как я уже писал Вадиму, стандарты всегда будут впереди браузеров, а значит всегда придётся определять что умеет браузер по его версии или ещё как-то. Сейчас два пути — CSS hack и JS. Первый — извращение, но позволяет верстальщику сразу увидеть что происходит, второй — такое же извращение, потому что верстальщику надо ещё и JS просматривать, чтобы увидеть что происходит.
C введением новых возможностей действительно все не просто. Но самое главное чтобы сайт основался читабельным во всех версиях (в том числе и тех которых еще нету и близко) и даже без цсс…

я стараюсь обходить такое банальным backround с заокруглением краев…
Париться с поддержкой разных версий браузеров — та еще работенка, а backпround img поддерживают все…
Последнее время я перестал использовать подобные хаки практически полностью, ибо их уже столько вариаций для всех браузеров, что их запомнить и в них разобраться крайне нереально. А еще со временем замечаются перекрытия, т.е. когда хак «исключительно для ИЕ» начинает восприниматься например Оперой и т.п.
Я сейчас практикую следующие подходы, которые максимально удобны, предсказуемы и понятны мне.
1.
<!--[if IE]><link rel="styleshee" type="text/cs" href="/ie.cs" /><![endif]-->
<!--[if IE 6]><link rel="styleshee" type="text/cs" href="/ie6.cs" /><![endif]-->

2.
<script src="/compatibility.js"></script>
$(function() {
if ($.browser.opera) {
// fix wrong right margin of buttons in opera
$('button.btn').css('margin-right', '3px');
};
if ($.browser.mozilla) {
// fix wrong top margin of buttons in FF
$('button.btn').css('margin-top', '-1px');
};

if ($.browser.safari) {
// fix wrong top margin of buttons in Chrome/Safari
$('button.btn').css('margin-top', '-1px');
};
});
Как видите, моя задача — различать Opera < 9.50, Opera 9.50 и Opera > 9.50
Это исключительно локальная задача, больше исследовательского характера.
На реальных проектах нужно порой отличать очень многих от многих. Эти объемы зависят на 99% только от качества верстки и стилей. К сожалению, самой непредсказуемой и максимально требующей CSS-хакрства задачей является расположение и стилизация input'ов, которые отличаются во всех браузерах.
У «Оперы» все версии xx.5x и xx.0xx — это глобальные изменения. Поэтому и приходится отличать именно эти версии. Поверьте мне, как человеку, который изнутри видит как разрабатываются решения для кучи браузеров, это не такая уж и редкая проблема.
Помню, в версии эдак 9.22 Опера поменяла направление дельты колеса мыши (всего-то плюс на минус изменили). Изменение, конечно, мелкое, но матерился я очень долго :)
Ну, можно спокойно подключать общий лист стилей для всех ИЕ < 8 (т.е. 6 и 7), а в нём делать 2 секции: общие для двух версий фиксы, и * html — для ИЕ6.
имхо проще подождать когда все обновятся. В отличие от пользователей IE, обновление Opera у пользователей проходит довольно быстро
Относительно пользователей IE — да, но обновляются не все и до 10.50 ждать несколько лет.
не однозначное предложение ) истолковать можно двояко ) но релиз 10.50 обещали не через несколько лет )
Я имею ввиду, что полный переезд на 10.50 займёт несколько лет.
а, ну это естественный процесс ) главное чтобы на 10.xx перешли ) а там автообновления есть и переход несколько ускорится )
Неужто Opera наконец научилась поддерживать border-radius?

А как называется — просто border-radius или что-нибудь свое собственное?
Как вы умудрились пропустить выход 10.50 prealpha? :) На «Хабре» было несколько статей.
Мне бы релизы основных браузеров успевать отслеживать.

А уж преальфы, да еще оперы — легко можно пропустить
смотря чем и где мерить )
Где не меряй, в России это один из популярнейших браузеров.
ну я собственно о том же ) что 1-2 место ))
Еще, пожалуйста, хак для FF >= 3.5 придумайте.
Не могу молчать.
Багов быть не должно :)
Так ведь это не баг, а вполне штатная ситуация. В стандарте нет Фичи, вебмастера реализуют её кто как горазд. W3C добавила Фичу в стандарт, через месяц (ну мы же в почти идеальном мире) она появилась во всех браузерах, но в старых-то версиях её нет, а эти версии будут жить ещё достаточно долго. Вебмастеру, очевидно, нужен способ отличить браузер с Фичей от браузера без Фичи. Как?
Про ответ Bolk'у не понял сразу, просто ещё дискуссия с Чикуёнком в твиттере наложилась.
Чёрт, спалил хороший хак :)

Может в Opera 10.50 какие-то селекторы появились новые, а? Или из media queries что-то новое реализовали?
Здесь нужно ждать спеки по Presto 2.5, хотя бы внутренней.
А она раньше бета-версий вряд ли появится.
Я понимаю, что могу нарваться на ответ «WIR» :) но может вы знаете, реален ли в январе 2010 выход альфы 10.5? И совсем нагло: а беты? :)
Ну, считайте, что нарвались ;)
Only those users with full accounts are able to leave comments. Log in, please.