Как стать автором
Обновить

Комментарии 119

Отличная статья. Еще бы про отличия w3c стандартов, на русском
Просто спасибо :)
Современная веб-разработка зиждется на трех китах...


а вот за это описание респект. четко ясно и понятно. часто приходится объяснять, теперь будет проще.
Клиенту чтоли обьяснять? Мне кажется — что ему пофиг, ему важен конечный результат. Хотя если упомятуть, что сайт сделан по стандартам — клиенту это понравится. :)
нет, не клиенту.
молодым разработчикам, которые пока что мало что знают.
Ну почему сразу заказчику? Можно объяснять младшим кодерам. Ну или студентам на предмете веб-технологий и веб-разработки
Респект вам и уважуха )
А ещё почему-то теряется возможность записать onLoad=«func();» внутри body. Или я в чем-то не прав?
только кавычки такие — "
потому что это необходимо писать в js коде:
$(«body»).bind(«load», function(){})
Вся проблема в том, что с каждой страницы (в моём случае) надо в функцию отправлять индивидуальный параметр.
Это в принципе можно решить присвоением id для каждой страницы.
вставьте кусок js кода в страницу в тегах <script> или определяйте параметр по каким-либо другим признакам на странице
может стоит добавить этот параметр при формировании html как аттрибут элемента и при регистрации события $(«body»).bind(«load», function(){}) находить его селектором )
Поправьте меня, если я неправ, но по-моему, в данном примере используется jQuery.

Быть может лучше в этом случае писать так:

$(function(){...});

Анонимная функция будет вызвана сразу, как только будет полностью загружено DOM-дерево (но ДО загрузки картинок и прочих элементов)
а без jQuery?
У меня тоже была такая проблема. Но вот в jQuery это как-то обходится. Советую посмотреть исходники, если это вам интерестно.
НЛО прилетело и опубликовало эту надпись здесь
хорошая практика переносить обработчики событий в js код%)
Кстати, есть одна интересная статья Beyond DOCTYPE: Web Standards, Forward Compatibility, and IE8, хоть она и не про валидацию, но рассказывает о взгляде на doctype как на механизм управления рендерингом в браузерах.
DOCTYPE в контексте X-UA-Compatible — отдельная тема, которая еще надолго не оставит нас безработными ;)
НЛО прилетело и опубликовало эту надпись здесь
А что за ошибка валидации?

<script language=«JavaScript»>
there is no attribute «LANGUAGE».
обычно пишут <script type=«text/javascript»>
Опередили )
Нет такого атрибута как language. Вот так правильно:

<script type="text/javascript" src="bla.js"></script>
Точнее написать «не стало такого атрибута». :)
Ну я, собственно, в статье об этом написал )
Мне в html 5 больше всего нравится doctype.
НЛО прилетело и опубликовало эту надпись здесь
Есть еще один плюс в указании полного DOCTYPE. Пытливый верстальщик сможет взять из него адрес DTD-схемы и заглянуть в нее. Много становится понятнее, когда видишь по какому принципу работает валидация.

А я бы вобще заставлял наизусть схемы заучивать ))
НЛО прилетело и опубликовало эту надпись здесь
Не согласен. Некоторые вещи IE6 обрабатывает по-разному, в зависимости от доктайпа.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Простите убогого. А для остальных какой выход? =/
НЛО прилетело и опубликовало эту надпись здесь
Статья полезная, но все равно считал и буду считать что Strict это зло, так как верстать и делать динамические кроссбраузерные интерфейсы в тех ограничениях которые он накладывает лишний геморой для разработчика. Тут хотябы идентичной работы во всех браузерах добиться бы а не следить за атрибутами и валидацией.
Предположу, что у производителей автомобилей марки ВАЗ такое же мнение — лишь бы ездила по всем дорогам более-менее одинаково, а остальное — геморой для разработчика.
В каком году был придуман стандарт HTML4? А XHTML?
Если есть желание работать по устаревшим правилам это ваше право, но стандарты придумывают те кому не хватает той или иной функциональности в браузерах или же тем кому надоело подставлять костыли под разные браузеры. Делаете сайты а-ля www.w3.org/ пожалуйста, но если я хочу от браузера большего и в нем такая возможность есть, хоть и не по стандарту то я ей воспользуюсь.
да! бегущая строка это именно тот функционал которого не хватает!
извиняюсь за сарказм, но действительно не понимаю что такого есть в браузерах и нет в стандарте что действительно необходимо. пример приведете?
Еще IE 5.5 поддерживал работу с XML, теперь это уже стандарт де факто. в FF есть XUL но конкретного шага в сторону webforms пока нет, хотя в HTML 5 добавляют input-ы типа range,date,email,url. Да и думаю большинство нужных CSS атрибутов -moz появится в CSS3.
НЛО прилетело и опубликовало эту надпись здесь
iframe мне нужен только для того что бы компенсировать несовместимость IE и с другими браузерами :) да и в этом случае ни о каком XHTML Strict речи не идет потому как IE6 его не поддерживает.
мне всегда хватало overflow: auto; возможно что причина в том что я не верстальщик и занимаюсь этим редко… тут ситуация похожая на target="_blank" имхо.

А вот связи между XML, XUL, HTML5, CSS и Transitional vs Strict не уловил.
А я так и не понял, чем вам не нравится www.w3.org/. Не объясните?
НЛО прилетело и опубликовало эту надпись здесь
Примерно так и есть, качества можно добиться и так и так. Стандарты необходимо знать и их придерживаться, я отлично знаю все места где код у меня не валиден, но я при этом знаю что только таким способом я мог решить ту или иную проблему.

Тут вопрос как раз разработчика стоит ли тратить время на получение этой кнопки или же на развитие функциональности.
НЛО прилетело и опубликовало эту надпись здесь
простите, что поправляю, но уж очень режет глаза — семантичным
Буквально сейчас заканчиваю кросбраузерный веб интерфейс в Strict который выглядит везде одинаково приятно :) Проблемы были только с IE6 потому как он xhtml(а у меня именно он) не поддерживает…
НЛО прилетело и опубликовало эту надпись здесь
Озадачивался этим вопросом. почему то ен получилось заставить работать в IE(хотел сделать трюк с ajax и кнопками back & forward в IE). это моя проблема или же это не возможно?
НЛО прилетело и опубликовало эту надпись здесь
Мне вот тоже iframe нужен был только для того что бы в IE заработала навигация при изменении hash в адресе, но с object у меня ничего неполучилось. Может есть какой то хак что бы заставить IE работать с object так же как и с iframe, но поняв что это будет хак ради хака я решил что можно обойтись и без этих кнопочек :)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Ребята, не поверите, я только что реально понял разницу между Transitional и Strict. Спасибо за список ограничений, да и за статью в целом!
НЛО прилетело и опубликовало эту надпись здесь
В Блокноте пишете небось? :)
НЛО прилетело и опубликовало эту надпись здесь
еще есть SciTE, может вам понравится
Я PHP Expert Editor юзал, пока не познал NuSphere PHPEd.
НЛО прилетело и опубликовало эту надпись здесь
Строго говоря, такие вещи лучше контролировать через CSS 3 со счётчиками и генерируемым содержимым.

Но да — убрать, не оставив альтернативы — это жестоко.
Эм, счетчики и генерируемое содержимое это CSS2.1
Гм. Пардон, попутал. Велик соблазн называть то, что мало где реализовано и почти не используется принадлежащим к CSS 3.

https://developer.mozilla.org/En/CSS_Counters
НЛО прилетело и опубликовало эту надпись здесь
Стандарты создают не для исправления багов, а для того что бы они не появлялись.
НЛО прилетело и опубликовало эту надпись здесь
ещё раз: object сделан не для того что бы реализовать нереализованную в браузерах ajax отправку файлов. в object может находиться swf, svg и т.д. Вы хотите в картинку форму отправить?
НЛО прилетело и опубликовало эту надпись здесь
если хотите ответы я вам их оглашу, хотя вы и сами это наверняка знаете. невозможно. невозможно.
только вот проблема не в html.

каким образом загрузка файла связана с (x)html? кроме того что и то и другое работает в контексте браузера я связи не вижу.

имхо именно из-за такого подхода стандарты в таком плачевном состоянии. не нужно путать назначения технологий и возлагать надежды на то что в html реализуют костыль к функционалу javascript.
НЛО прилетело и опубликовало эту надпись здесь
stdout и C — системный язык программирования…
DOM с которым имеет дело JS не привязан к html. JS и HTML никак не влияют друг на друга. Хотие я вам покажу SVG картинку с JS которая работает в браузере с подобной DOM и не содержит ни капли HTML? в ней совсем нет возможности отправить файл но это не проблема SVG или HTML.
целиком и полностью поддерживаю!
НЛО прилетело и опубликовало эту надпись здесь
html это язык разметки и он ничего не отсылает. в случае не ajax запросов, файлы отсылает браузер и прекрасно с этим справляется.

Проблемы возникают при использовании ajax запросов с вложенным файлом(тут работает JavaScript). По соображениям безопасности JS не имеет доступа к файловой системе пользователя и соответственно не может отправить файл ajax запросом. Но, раз такая возможность была бы очень удобной, разработчики стали придумывать костыли с нестандартным использованием сторонних объектов (iframe, flash).

Если бы вместо того, чтобы остановиться на этом хак разработчики постарались бы в стандарт JS ввести доступ к файлам выбранным в input[@type='file'] то сейчас никаких вопросов и обвинений не возникало бы.

Теперь же, когда упразднили элемент Iframe и сделали более универсальный object(с задачей для которой создавался iframe он справляется), старые костыли перестали работать, ну и виноват в этом конечно же w3c.
НЛО прилетело и опубликовало эту надпись здесь
В конце концов всё через сетевую карту идет, ну вы же понимаете что я говорил о том что при не ajax этот процесс автоматизирован и не контролируем.

Ещё раз: в OBJECT можно постить мультипарт форму?

ветка началась с обсуждения этого вопроса. а вот на счет атрибута target у ссылок и форм я уже отписался в другой ветке.
Про появление XmlHTTPRequest в качестве ActiveX расширения я знаю. Тут в отличии от своего обычного мнения по поводу IE не могу не согласиться что это было весьма хорошее нововведение, как и VML позже превратившийся в SVG как и поддержка XSLT (в IE она была реализована первой). Есть конечно и другие мысли о некоторых нововведениях но на эту тему не считаю нужным холиварить.

Я пытаюсь отстоять мнение о том, что стандарты это не плохо и то, что в XHTML Strict не работает хак это проблема/вина тех кто его использует а не тех кто усовершенствовал стандарт. Тут вы согласитесь?
НЛО прилетело и опубликовало эту надпись здесь
Селект в ослике в любом случае перекрывается JS-генерируемым iframe'мом, так что костыли за аргумент не принимаются )
статья хороша тем что направляет разработчиков в правильную сторону.
но в реальных проектах использовать strict можно лишь там, где вы на 99% уверены, что контент-манагер не вобъёт в визиг текст из word'a, а сайт будите поддерживать только вы и никто другой.

есть несколько проблем связанных с повсеместным использованием strict, главная из них (упрощённо) — что strict это как показы мод от кутюр — клёва, но тяжело в реальности.
* контент-менеджеры могут вбить всё что угодно. и ваш сайт, который был-бы валиден в transitional не будет валиден в strict.
* затрудняется поддержка сторонними разработчиками. target — неработает, iframe — неработает, и т.п. Вам будет икаться :)
* поиск обходных путей это замедляет разработку, а это — потеря денег. При этом реальной (финансовой) пользы strict почти не приносит (почти — кроме понтов, хотя хороший понт — дороже денег).

Что вы приобретаете?
* Хорошо структурированую разметку

разметка зависит не от doctype, а от того откуда руки растут.
можно писать ультра-семантично и в transitional.

Четкое отделение содержимого от оформления

аналогично

Возможность более быстрой и легкой работы и поддержки кода

реализовывание обходными путями функционала непредусмотренного в strict скорости явно не прибавляет.
а уж как такой код «поддержат» джуниоры — страшно думать.

Дисциплину в написании кода
Респект и уважуху ;)

это да, это есть.
но всё можно красиво сделать и в transitional.

Теперь немного в зашиту, чтоб не подумали что я против прогресса :)
Т.к. по-сути единственная радость от strict — понты, я предлагаю ставить strict только на морде сайта.
1. Она как правило идёт отдельным шаблоном
2. Весь её код обычно или генерируется скриптами или статичен, а не редактируется из админки.
3. Сорцы смотрят как правило морды.

Такие дела :)
да уж, если бы поменяв одну строчку можно было бы приобрести всё то что написал автор, это была бы сказка)
ах, да — вот ещё одна мелочь — в transitional одиночная картинка вставленная в ячейку таблицы не генерирует контейннер строки. ну простыми словами — в strict вокруг картинки в ячейки таблицы появятся отступы. Вот тут подробнее: https://developer.mozilla.org/en/Images,_Tables,_and_Mysterious_Gaps

Это конечно олд-скул и мало кому интерестно, но при редизайне старых сайтов полезно знать.
Хотя проблему легко вылечить сделав картинку блочным элементом.
элементы… не могут быть дочерними для blockquote, body, form, noscript

body? или может имелось в виду tbody?
Имелось в виду то что было написано.
Прошу прощения, невнимательно прочитал. Речь то шла только о дочках первого уровня.
Ну да, иначе бы веба не было ))
Я не понимаю — чем W3C не угодил атрибут «target» у ссылок?
тоже для меня всегда оставалось загадкой. Хотя в принципе не особо обломно, но «осадок остался»
а тем что это мешает пользователю. если я просматриваю сайт, то я должен решать где я его буду просматривать. допустим разного рода сайты с желтыми новостями злоупотребляют target'ом и каждая следующая страница открывается в новом окне, мне(как пользователю) этого не хочется. а если я сам желаю открыть в ссылку в новм окне то я могу этого легко достичь привычным нажатием колесика мыши(ну если кому удобнее то правой кнопкой мыши и выборум пункта меню). суть в том что не всё нужно решать за пользователя
Кстати в HTML5 target возвращается.
К сожалению пока не нашел времени посмотреть пока неактуальны html5. Если он действительно возвращается то мне так же становится неясна логика :) Можете объяснить?
Теряюсь в догадках. Сначала отменили как deprecated. Теперь возвращают…
НЛО прилетело и опубликовало эту надпись здесь
Тебе действительно хочется не закрывать теги (есть и такие персонажи) или всё же иметь больше возможностей? (это ещё можно понять)
С другой стороны есть варианты, когда немного подумать за пользователя полезно.
Например, есть форма, состоящая из 20 полей, которую юзер внимательно заполнил. В конце стоит ссылка на пользовательское соглашение, или на другую информацию, которая не помещается на текущей странице. Если юзер нажмет на ссылку и страница откроется в этом же окне (табе), все введенные данные пропадут. Вот здесь было бы нелишним обезопасить пользователя от случайного сброса данных.
Еще как вариант можно рассмотреть страничку, на которой проигрывается видео или аудио. Тогда при открытии ссылки в том же окне проигрыш прервется, что не есть юзер-френдли.
Бесспорно, все описанные выше кейсы можно обойти с помощью того же джаваскрипта. Я лишь хотел выразить свое личное мнение, что атрибут target заслуживает право на жизнь, и что юзабилити — это золотая середина между подходами, когда все продумано за пользователя и когда пользователь все решает сам.
Я лично использую стрикт, потому что он переключает браузеры в правильный режим, да и при валидации по идее должно больше косяков выявляться (не все конечно критичны, просто что бы иметь ввиду). Реальных мега преимуществ у стрикта не видно. Разве что
# Дисциплину в написании кода
ну и понтануться можно что в стрикт верстаешь :>
статья отличная, автору, однозначный как он выразился респект и уважуха, но дико извиняюсь: убирети слово «залазив». Оно ужасно, его нет в русском языке.
как впрочем и слова «убирети» :) в моем посте :)
Спасибо за поправку, сейчас прочитал и ужаснулся ))
НЛО прилетело и опубликовало эту надпись здесь
Я с вами согласен, но считаю что многим разработчикам валидация, в первую очередь, нужна как инструмент для самоконтроля, дисциплины написания кода и четкого понимания того, что они делают. Потому что дать свободу написания кода человеку, который осознает что он делает — это одно, а дать свободу начинающему разработчику — совсем другое.

В сложившейся ситуации важно воспитать дух, а инструменты подтянутся.
НЛО прилетело и опубликовало эту надпись здесь
по поводу открытия ссылок в новом окне…
я не разработчик, обычный юзер, который немножко зная html, просто наваял несколько страничек себе, под разные нужы.

Однажды возникла идея сделать себе небольшой каталог ссылок, именно в виде отдельного сайта-странички на коротком домене (закладки не вариант, ибо нужен доступ с любого компьютера; сервисы социальных закладок не нравятся рекламой/дизайном/прочим мусором). Ну вот такая маленькая прихоть. Естественно, у всей этой штуковины пользователь один. Я. Ну и ещё знакомых я посылаю туда, которые вечно спрашивают «а где качать порно?», «а музыку брать где?» и т.п.

Естественно, мне нужно было всё открывать в новом окне, но на многих сайтах, где поднимался этот вопрос, почти все хором твердили: «пользователь сам должен решать, где и что ему открывать!». Была поставлена задача, а люди, вместо советов, высказывали мнение о неправильной задаче впринципе.

Ну, блин, я наконец-то нашёл гениальное по своей извращённости [base target="_blank"], которое надо прописать в head страницы. И, вы знаете, мир не взорвался, меня не съел динозавр, как в том комиксе, всё заработало так, как мне надо.

Может, вы знаете валидный способ одной командой/строчкой открывать все ссылки в новом окне — подскажите.

P.S. кстати, где-то кто-то обмолвился, что такая функция будет реализована в css3, значит это кому-нибудь нужно)
Честно говоря, я привык действовать по-другому:

— Ставлю максимально строгий доктайп
— Бодаюсь, чтобы соответствовать ему
— Если не получается, скатываюсь на Transitional

А на картинке какая-то неваляшка-мутант :)
Вадим, давай как на духу — часто у тебя не получается? )
Если правила разработки находятся под моим контролем — почти всегда.
Если я всего лишь один из исполнителей, то редко.

Какнадуху :)
все просто и лаконично — пятерка.
CurlyBrace, добавлю свое решение по поводу «Отказ от атрибута target="_blank" для ссылок.»л:
<a href="http://example.com" onclick="this.target='_blank'">link</a>
Выше уже говорили про использование iframe в хаках для IE. В качестве выхода предлагали генерировать iframe с помощью Javascript или заключать в условные комментарии. Но есть же ещё один, более распространённый пример использования iframe: создание его для отсылки в него формы, для использования асинхронной загрузки файлов. ясное дело, что это не отражается на валидации документа, так как iframe создаётся через DOM, но является ли это корректным? :)
Дисциплина это конечно хорошо, но реальных преимуществ Strict перед Transitional не вижу (понты перед коллегами не в счет). Даже наоборот, в быстро развивающемся проекте с 90% user-generated контентом стриктовый доктайп приносит только неудобства.
С радостью бы юзал Стрикт, но у нас CMS на ASP… там в коде после body сразу form… внутри которой вся вёрстка…
сколько не спрашивал программеров, говорят по другому никак, ничем помочь не могут… (
А в чём проблема? Вставьте один большой div, в него всё остальное :)
Правда я не верстальщик, я просто программист в конторе, у которой тоже CMS на ASP.NET… И наша вёрстка использует strict.
На самом деле я не заморачиваюсь валидацией, а с точки зрения стремления к идеалу меня больше беспокоят ошибки типа:

Error Line 239, Column 50: value of attribute «ID» invalid: "_" cannot start a name.
…type=«hidden» name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTEyOTM1ODU0

И тому подобные… А элементы эти генерит сам asp.
Использование форму в теле кода — это аналог Windows Forms.
«Сближает программирование настольных приложений с программированием web-приложений».

Поэтому там
<_body_>
<_form id=«Form1» runat=«server»>
<_/form>
<_/body_>

(подчёркивания я выдумал)
использование form на все тело страницы — это прежде всего «долбо%бизм» как тут ни крути.
С радостью бы юзал Стрикт, но у нас CMS на ASP

Плакали все программисты, искренне сочувствую.

Я вот действительно не понимаю, чем им не угодил ифрейм и таргет, остается только динамически JS-ом добавлять, хотя про ссылки это имхо перебор.

Автору спасибо за полезную информацию, а господину maxlapshin за информацию к размышлению и логичный вопрос.
Ещё есть:
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" «www.w3.org/TR/html4/frameset.dtd»

This declares the document to be HTML 4.01 Frameset. HTML 4 Frameset is a variant of HTML 4 Transitional for documents that use frames.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории