- Главная»
- Уроки»
- HTML и DHTML»
- Структура DOM в случае ошибок в разметке HTML
Структура DOM в случае ошибок в разметке HTML
Ошибки при построении разметки могут приводить к разному результату в разных браузерах. Конечно, исходный код будет везде одинаков, но если проверить структуру DOM с помощью инструментов разработчика, то результат будет различаться.
Вот какой код будем проверять:
<div> <p><span><b>Некий текст</span></b></p> </div>
Указанный код вставлен в правильную структуру тега <body>
.
Внутри элемента параграфа имеется ошибка закрытия тегов: открывается тег <span>
, затем открывается тег <b>
, но тег <span>
закрывается первым.
В действительности такая ситуация соответствует ошибке 101 при проверке кода. Кроме того, многие редакторы автоматически правильно закрывают теги. Поэтому такая ситуация должна встречаться вам очень редко, практически- никогда.
Тем не менее посмотрим, как такая ошибка будет выглядеть в структуре DOM, созданной браузером на основании полученного кода. Ниже приводится несколько снимков экрана разных браузеров при просмотре структуры DOM с помощью инструментов разработчика:
Chrome 9
Firefox 3.6
Internet Explorer 9
Opera 11
Safari 5
Построенная структура DOM имеет различия.
Удвоенный элемент. Ну и что?
Казалось бы, что такого? Но неправильная структура DOM может влиять на CSS и JavaScript, которые используют указание элементов в коде. Можно подумать, что такая ситуация никогда не случится, потому что код всегда проходит проверку. Но если страница генерируется динамически или на ней имеется пользовательское содержание, то вероятность появления подобной ошибки весьма высока. Конечно, проблема не имеет глобального значения, но относится к разряду "никто не знает, что может случиться".
Другой фактор, о котором следует упомянуть - одинаковое выполнение кода веб языков. Спецификация HTML5 включает инструкции для браузеров, как обрабатывать ошибки в разметке. Если им следовать, то код с ошибками будет одинаково отображаться в разных браузерах. Однако сейчас имеется ситуация, которая может предоставить сюрприз для разработчика при проверке кросс-браузерности его творения.
Firefox 3.6, IE9, и Safari 5 выводят дополнительный элемент. Достаточно свежие версии браузеров показывают различный результат (особенно странной является ситуация с Safari и Chrome, которые построены на одном движке WebKit). Если разработчики браузеров руководствовались спецификацией в случае обработки ошибок в разметке, почему мы имеем разный результат?
Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.impressivewebs.com/dom-improperly-nested/
Перевел: Сергей Фастунов
Урок создан: 15 Сентября 2011
Просмотров: 19951
Правила перепечатки
5 последних уроков рубрики "HTML и DHTML"
-
Лайфхак: наиполезнейшая функция var_export()
При написании или отладки PHP скриптов мы частенько пользуемся функциями var_dump() и print_r() для вывода предварительных данных массив и объектов. В этом посте я бы хотел рассказать вам о функции var_export(), которая может преобразовать массив в формат, пригодный для PHP кода.
-
17 бесплатных шаблонов админок
Парочка бесплатных шаблонов панелей администрирования.
-
30 сайтов для скачки бесплатных шаблонов почтовых писем
Создание шаблона для письма не такое уж простое дело. Предлагаем вам подборку из 30 сайтов, где можно бесплатно скачать подобные шаблоны на любой вкус.
-
Как осуществить задержку при нажатии клавиши с помощью jQuery?
К примеру у вас есть поле поиска, которое обрабатывается при каждом нажатии клавиши клавиатуры. Если кто-то захочет написать слово Windows, AJAX запрос будет отправлен по следующим фрагментам: W, Wi, Win, Wind, Windo, Window, Windows. Проблема?.
-
15 новых сайтов для скачивания бесплатных фото
Подборка из 15 новых сайтов, где можно скачать бесплатные фотографии для заполнения своих сайтов.