Долгие споры о преимуществах-недостатках браузеров (напр. здесь: http://forum.shadrinsk.net/viewtopic.php?t=10639 ) навели на мысль, что пора эти преимущества-недостатки показывать, фиксировать и доказывать. Т.к. сейчас как раз читаю лекции в ШГПИ, связаные с веб-разработкой, некоторые выдержки буду выносить сюда.
Для начала, проверим любымый браузер на соответствие некоторым стандартам:
Можете сообщить о результатах. Вторая серия будет о том, что декларируемая поддержка стандартов действительности иногда не соответствуют. По русски - некоторые производители браузеров (не будем тыкать пальцем ) нагло врут. |
IE 7.0 Final писал(а): HTML 1.0: обеспечена
XML 1.0: отсутствует либо обеспечена не полностью Core 2.0: отсутствует либо обеспечена не полностью HTML 2.0: отсутствует либо обеспечена не полностью XML 2.0: отсутствует либо обеспечена не полностью Views 2.0: отсутствует либо обеспечена не полностью StyleSheets 2.0: отсутствует либо обеспечена не полностью CSS 2.0: отсутствует либо обеспечена не полностью CSS2 2.0: отсутствует либо обеспечена не полностью Events 2.0: отсутствует либо обеспечена не полностью UIEvents 2.0: отсутствует либо обеспечена не полностью MouseEvents 2.0: отсутствует либо обеспечена не полностью HTMLEvents 2.0: отсутствует либо обеспечена не полностью MutationEvents 2.0: отсутствует либо обеспечена не полностью Range 2.0: отсутствует либо обеспечена не полностью Traversal 2.0: отсутствует либо обеспечена не полностью Firefox 2.0 писал(а): HTML 1.0: обеспечена
XML 1.0: обеспечена Core 2.0: обеспечена HTML 2.0: обеспечена XML 2.0: обеспечена Views 2.0: обеспечена StyleSheets 2.0: обеспечена CSS 2.0: обеспечена CSS2 2.0: обеспечена Events 2.0: обеспечена UIEvents 2.0: обеспечена MouseEvents 2.0: обеспечена HTMLEvents 2.0: обеспечена MutationEvents 2.0: отсутствует либо обеспечена не полностью Range 2.0: обеспечена Traversal 2.0: отсутствует либо обеспечена не полностью Opera 9.0 писал(а): HTML 1.0: обеспечена
XML 1.0: обеспечена Core 2.0: обеспечена HTML 2.0: обеспечена XML 2.0: обеспечена Views 2.0: обеспечена StyleSheets 2.0: обеспечена CSS 2.0: обеспечена CSS2 2.0: обеспечена Events 2.0: обеспечена UIEvents 2.0: обеспечена MouseEvents 2.0: обеспечена HTMLEvents 2.0: обеспечена MutationEvents 2.0: обеспечена Range 2.0: обеспечена Traversal 2.0: обеспечена |
Заметьте - в разработке всех вышеперечисленных стандартов майкрософт принимала активное участие
Кстати, не любил Оперу несколько лет назад: Оpera 7.54 писал(а): HTML 1.0: обеспечена
XML 1.0: отсутствует либо обеспечена не полностью Core 2.0: отсутствует либо обеспечена не полностью HTML 2.0: отсутствует либо обеспечена не полностью XML 2.0: отсутствует либо обеспечена не полностью Views 2.0: отсутствует либо обеспечена не полностью StyleSheets 2.0: отсутствует либо обеспечена не полностью CSS 2.0: отсутствует либо обеспечена не полностью CSS2 2.0: отсутствует либо обеспечена не полностью Events 2.0: обеспечена UIEvents 2.0: обеспечена MouseEvents 2.0: обеспечена HTMLEvents 2.0: обеспечена MutationEvents 2.0: обеспечена Range 2.0: отсутствует либо обеспечена не полностью Traversal 2.0: отсутствует либо обеспечена не полностью |
Внимание, вопрос! Что из того, что xdsl писал(а): отсутствует либо обеспечена не полностью вы используете ежедневно и регулярно? Ну кроме сайта золотой рыбки конечно _________________ Йа - водоросль. |
IE 6.0 SP1 писал(а): HTML 1.0: обеспечена
XML 1.0: отсутствует либо обеспечена не полностью Core 2.0: отсутствует либо обеспечена не полностью HTML 2.0: отсутствует либо обеспечена не полностью XML 2.0: отсутствует либо обеспечена не полностью Views 2.0: отсутствует либо обеспечена не полностью StyleSheets 2.0: отсутствует либо обеспечена не полностью CSS 2.0: отсутствует либо обеспечена не полностью CSS2 2.0: отсутствует либо обеспечена не полностью Events 2.0: отсутствует либо обеспечена не полностью UIEvents 2.0: отсутствует либо обеспечена не полностью MouseEvents 2.0: отсутствует либо обеспечена не полностью HTMLEvents 2.0: отсутствует либо обеспечена не полностью MutationEvents 2.0: отсутствует либо обеспечена не полностью Range 2.0: отсутствует либо обеспечена не полностью Traversal 2.0: отсутствует либо обеспечена не полностью |
фигня какая-то. как это хмл 1.0 нет в ие 7? да и ксс 2.1 поддерживается. |
andy ice писал(а): как это хмл 1.0 нет в ие 7? да и ксс 2.1 поддерживается.Я думаю, все дело в коде _________________ Йа - водоросль. |
Dio
тут есть мнение, что ИЕ просто скромничает _________________ Ин дер гросен фамилие нихт клювен клац-клац |
А, может, собака зарыта тут:
Точнее, тут - hasFeature(); |
А еще конкретнее, как "отрабатывается" hasFeature(); различными бродилками _________________ Йа - водоросль. |
andy ice писал(а): фигня какая-то. как это хмл 1.0 нет в ие 7? да и ксс 2.1 поддерживается.Dio писал(а): Внимание, вопрос! Что из того, что xdsl писал(а): отсутствует либо обеспечена не полностью вы используете ежедневно и регулярно? Events. Dio писал(а): Ну кроме сайта золотой рыбки конечно Не мое, кроме функции normalbrowser() Последний раз редактировалось: xdsl (2006.11.13 01:19.54), всего редактировалось 1 раз |
Вот еще немножко глюков от MS
На IE7 не проверял, может исправили. Продолжение следует ... |
xdsl
в ИЕ7 "В теле документа 0 символов" в ФФ "В теле документа 42 символов" |
xdsl писал(а): node.TEXT_NODEКстати пример xdsl-я работает только в FF, и ИЕ и Опера выдают ноль символов а если вот так:
кстати ИЕ правильно считает - в тексте 30 символов. |
Из теста в этом посте видно, что Опера 9.0 обеспечивает поддержку всех стандартов. Однако, Опера, как и IE считает, что в тексте 0 символов.
Если использовать код andy ice'а, то получаем следующие результаты: IE - 30 символов, FF - 36 символов, Opera - 42 символа. Где правда? |
Konst писал(а): Где правда?_________________ Ин дер гросен фамилие нихт клювен клац-клац |
Посчитал вручную.
Если chr(32) считать символом, то 44, если нет - 42. Результат ИЕ - только текст без ХТМЛ-тегов+2*chr(32) Результат Лисы непонятен... . _________________ Йа - водоросль. |
Dio
не, не так считается: в функцию передается элемент body. в функции смотрим - если это текстовая нода, но возвращаем её длину, если нет, то для каждой субноды вызываем снова подсчет длины. в моем примере действие такое: 1. вызов функции(body) 2. body не текст 3. берем вложенный элемент - параграф 4. вызов функции(p) 5. p есть текст 6. возвращаем длину - 15 7. берем следующий и к пункту 4. ... итого 30 символов смотрим в ФФ. Оказывается переносы строк ФФ тоже берет как #text я не смотрел как это в стандартах описано, но мне как программеру поведение ИЕ более правильно _________________ Ин дер гросен фамилие нихт клювен клац-клац |
andy ice писал(а): но мне как программеру поведение ИЕ более правильноА мне, как программеру, надо знать, сколько точно символов в тексте, конкретно - сколько байт. Переводы строк - те-же байты, причем могут быть и #10 и #13 и #13#10, которых ИЕ в упор не видит, болезный. Если мне понадобится знать что-то другое, например - сколько значащих символов в тексте (что и возвращает ИЕ), я так и напишу:
В принципе, кому-то может и плюс-минус байт без разницы. Но это, конечно, далеко не все глюки. Вспомним, с чего начиналось: xdsl писал(а): ... декларируемая поддержка стандартов действительности иногда не соответствуют. По русски - некоторые производители браузеров нагло врут.MS декларирует полную поддержку DOM1: SKIP писал(а): IE 7.0 Final писал(а): HTML 1.0: обеспечена Интерфейс Node в DOM1 определяет: Цитата interface Node {
// NodeType const unsigned short ELEMENT_NODE = 1; const unsigned short ATTRIBUTE_NODE = 2; const unsigned short TEXT_NODE = 3; const unsigned short CDATA_SECTION_NODE = 4; const unsigned short ENTITY_REFERENCE_NODE = 5; const unsigned short ENTITY_NODE = 6; const unsigned short PROCESSING_INSTRUCTION_NODE = 7; const unsigned short COMMENT_NODE = 8; const unsigned short DOCUMENT_NODE = 9; const unsigned short DOCUMENT_TYPE_NODE = 10; const unsigned short DOCUMENT_FRAGMENT_NODE = 11; const unsigned short NOTATION_NODE = 12; ... Прогр.продукты, декларирующие поддержку DOM1 должны обеспечивать полную реализацию всех интерфейсов стандарта. Однако: andy ice писал(а): node.TEXT_NODE неопределен Вывод: MS нагло врет о полной поддержке DOM1. Опера тоже, по видимому, небезгрешна. Продолжение следует ... |
xdsl
а что так... забавно? МС - врет, а Опера так вссего лишь небезгрешна xdsl писал(а): А мне, как программеру, надо знать, сколько точно символов в тексте, конкретно - сколько байта чтобы в ИЕ и Опере получить длину документа можно проще сделать: alert(document.body.innerText.length); ну и что, ну нет его в ДОМ. зато удобно ps: а разве ДОМ и ХТМЛ - не разные вещи? pps: если уж так приспичило пользоваться такими константами, которых нет аж в двух браузерах, которыми предпочитает пользоваться большинство пользователей, то ничего не мешает определить их через прототипы. даже наборы функций переписывать не надо будет, пусть такие неповоротливые, как рекурсивный подсчет длины всех вложенных субнодов |
andy ice писал(а): а что так... забавно? МС - врет, а Опера так вссего лишь небезгрешна
В отличие от ИЕ про Оперу вокруг воплей не слышно, что "ее все используют, поэтому код надо под ее особенности подгонять". Поэтому под ней не проверял. Где-то она параллельно от меня. Буде у кого желание - может проверять и Оперу. andy ice писал(а): а чтобы в ИЕ и Опере получить длину документа можно проще сделать: alert(document.body.innerText.length); ну и что, ну нет его в ДОМ. зато удобно Ничего подобного, не вводитесь в заблуждение:
Можете еще пробельчиков наставить в пустых строчках или в конце значащих для полноты картины А вот так в FF:
ну и что, ну нет его в ДОМ. зато удобно ((c) andy ice) и правильно считает andy ice писал(а): ps: а разве ДОМ и ХТМЛ - не разные вещи? andy ice писал(а): если уж так приспичило пользоваться такими константами, которых нет аж в двух браузерах, которыми предпочитает пользоваться большинство пользователей, то ничего не мешает определить ихШикарное предложение. Вроде как такая ситуация: Покупаешь, значит, компьютер. В бумажках к маме написано: встроенная звуковуха и сетевая. Дома запускаешь - нету ни того ни другого. Приходишь возмущенный в магазин, а менеджер вещает: "Знаете, столько людей пользуются внешними карточками! Почему-бы у Вам у Нас их не приобрести?" Демагогию чувствуете? Вам не объясняют, почему в доках есть, а в реале нету. Вам не предлагают заменить маму на другую, соответствующую спецификации. Вместо этого вам предлагают костыли, причем за ваши-же деньги. andy ice писал(а): даже наборы функций переписывать не надо будет, пусть такие неповоротливые, как рекурсивный подсчет длины всех вложенных субнодов |
Ах да, совсем забыл. Это все только начало. Багов или фичей безумных у IE не счесть, так что продолжение следует ... |
xdsl писал(а): почему в доках есть, а в реале нетуxdsl писал(а): В бумажках к маме написаноps: пока ничего критичного не было, ждем с нетерпением что-то серьезное _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Религиозные войны? Устал я уже от них... "Головная боль веб-девелопера клиенских приложений"... Работа разработчика никогда малиной не была, хоть и казалась таковой для многих. Призывы всем разрабатывать под FireFox, Opera и иже с ними? Забыть про IE? Глупо, ибо большинство сидит на IE.
Низкий поклон разработчикам FireFox и Opera. Они УМУДРИЛИСЬ наконец угнаться за IE. В чём-то опередить... Молодцы. Теперь, конечно, время кричать на весь мир, что они лучше! Заметьте, Opera молчит. Кичат мощи Mozilla Foundations. Ибо их нет, а Microsoft есть... SeaMonkey? Пока этот проект мною всерьёз не воспринимается... FireFox... Громко кричали про безопасность браузера... Браузер стал популярным. Хакеры поняли, что можно заняться и им. Занялись... Пошла череда билдов... Так же как и с IE... Латают и латают... Молодцы, что хоть латают... Чисто с точки зрения пользователя размышляю... Я любитель Opera. Я не кричу, что он лучший. Он просто удобен. Навигация удобна. Управление мышью... Почта в нём и ирка приятная на глаз... Шустро работает (не включая первый запуск). И... Глючит порой при отображении некоторых сайтов. ну что ж - софта безлючного нет... От IE я не откажусь только по двум причинам: Если надо просто открыть какую-нить доку в html, сохранённую на диске то ждать когда запустится FF или Opera c нуля - влом, а код IE наполовину уже висит в системе. Висит - так пусть работает. Ведь первый запуск IE в подавляющем количестве случаев на НОРМАЛЬНО поставленой системе самый быстрый. Вот. А в качестве примеров - лучше приведите сайты (нормальные сайты, которые будут мне нужны, ради которых мне придётся проинсталлить FF), которые IE отобазить не может. Был прикол, когда ползая по www.microsoft.com браузер IE орал про какую-то JavaScript ошибку, а остальные браузеры - проверил - срабатывали без ошибок. Но это оффтоп... Сейчас поставил себе финальную версию Vista под билдом 6000. Зашёл на форум. На чём зашёл? (Угадайте, какой я браузер запустил первым) И пишу этот текст. Плююсь я на Vista, но ведь поставил... Привычка? А, может, за такие деньги ничего лучше нет? Хочу Мак. Грежу. Виста - всего-лишь подделка под мак. Линукс на десктопе подойдёт только идеологам а не практикам. В общем, всё сказал. Вроде. Жду помидоров. |
Где тут религиозные войны? Конкретные примеры программ, которые каждый может проверить на своем любимом браузере и сообщить всем, работают они или нет. И почему.
А популярность-непопулярность... Это для PR-мендежеров и их многочисленных жертв. Лично я предпочитаю конкретику в виде кода, а не размахивание руками. И на рекламу особо не оглядываюсь, ибо врет. Для меня, как разработчика, важно правильное функционирование продукта, его соответствие стандартам. Потому-что иначе я теряю время в бесплодных поисках ошибок программы, которые оказываются на самом деле - в пр.продукте, для которого я пишу программу. Я ценю свое время. Теперь про FF. Как ни странно, но в FF, Mozilla, SeaMonkey и Epiphany мои программы работают без ошибок. Причем к девелоперской документации по этим продуктам обращаюсь только тогда, когда функционала стандартов не хватает (например - в обработке клавиатурных событий). Теперь про IE. Терять время на глюках и недофичах IE желания нет. Некоторое их количество было приведено выше, причем одна всплыла прямо в процессе дискуссии. Это я о подсчете кол-ва символов. О столь экзотичном поведении IE я даже и не знал. Оказывается, разработчики ослика лучше знают, что мне нужно из документа. Это конечно мелочи, хотя и неприятные. Теперь про Оперу. Мое мнение - опера пытается усидеть на двух конях: поддержке стандартов и IE. Так как это две совершенно разные вещи, то просто преклоняю голову перед разработчиками оперы. Компания маленькая, ресурсов немного, в качестве цели - сверзадача, которая более-менее успешно выполняется. К ошибкам в их продукте можно, на мой взгляд, относиться снисходительно ... Джем писал(а): А в качестве примеров - лучше приведите сайты (нормальные сайты, которые будут мне нужны ...andy ice писал(а): в доках? а нет в доках. нет в доках, которыми удобно пользоваться - MSDNandy ice писал(а): есть конкретная реализация. может от референса отличаться и сильно |
xdsl писал(а): Та документация верна, которой удобно пользоваться. а про разницу между HTML и DOM так и не сказал - разные вещи или нет |
xdsl
про железо, не удачный пример, так как обычно в инструкции к нему (железу) есть такая приписка, что производитель (к примеру материнской платы) может сделать изменения, которые не будут отражены в данном руководстве. |
xdsl писал(а): А популярность-непопулярность... Это для PR-мендежеров и их многочисленных жертв. ps: кстати и дельфи никому нафик не уперлось, как оказывается. _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Вот маленький тест...
<div style="border: 1px solid black; "><div style="height:100%; border: 1px solid green; ">blah!</div></div> _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Да уж
Почему то мне поведение IE и Opera представляется более логичным |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы |