Главная -> Статьи о HTML5 -> Частые вопросы о HTML5: Какие изменения предлагается внести в HTML5

Частые вопросы о HTML5: Какие изменения предлагается внести в HTML5

Все элементы HTML5 должны поддерживать атрибут href

Спецификация разрешает содержать блоки внутри тега <a>, однако она не разрешает ставить атрибут href на всех элементах.

Поддержка href всеми элементами связана с несколькими проблемами, которые будет сложно решить в HTML5. Главной проблемой является то, что производители браузеров считают что внедрение этой функции чрезвычайно сложно и заниматься этим нет смысла. Мы не можем приказать им реализовывать ту или иную функцию - они сами выбирают что им делать, а что нет. Вот причины, по которым они не планируют реализовывать поддержку href каждым элементом:

  • Нет обратной совместимости с уже существующими браузерами.
  • Эта возможность не добавляет какой-либо новой функциональности. То же самое можно реализовать с помощью тега <a> и небольшого скрипта.
  • Для некоторых элементов вообще нет смысла вводить поддержку атрибута href. Например в тегах <input> и <button> атрибут href будет противоречить с уже существующей функциональностью.

Единственным преимуществом, от добавления поддержки href во всех элементах является то, что разработчикам, в некоторых случаях, потребуется писать меньше кода, чем обычно. Мы считаем что этого недостаточно.

Помещение блочных элементов внутрь тега <a> решает множество проблем. Это, конечно, не дает возможности делать строки таблицы гиперссылками, но всегда можно найти компромисс:

<tr onclick="location = this.getElementsByTagName('a')[0]"> ... </tr>

HTML5 должен поддерживать заголовки списков

Заголовок списка можно задать с помощью тегов <figure> и <legent>:

<figure>
 <legend>Города</legend>
 <ul>
  <li>Тамбов</li>
  <li>Москва</li>
  <li>Санкт-Петербург</li>
 </ul>
</figure>

Вы также можете дать заголовок списка:

<dl>
 <dt>Dry:</dt>
 <dd>
  <ul> 
  <li>1c flour</li> 
  <li>1/4c sugar</li>
  <li>1tsp baking soda</li>
  </ul>
 </dd>
 <dt>Wet:</dt>
 <dd>
  <ul> 
  <li>1 egg </li>
  <li>1/2c milk</li>
  <li>1tsp vanilla extract</li>
  </ul>
 </dd>
</dl>

Эти методы предпочтительнее добавления элемента <lh>, как было предложено в HTML3.

HTML5 должен поддерживать инструмент, с помощью которого каждый сможет разрабатывать свои элементы

Вот несколько способов, с помощью которых разработчики могут создавать свои расширения для HTML:

  • Разработчики могут использовать атрибут class для наследования элементов, фактически создавая собственные элементы на основе уже существующих HTML элементов. Такой принцип используется, например, в микроформатах.
  • Разработчики могут использовать новый атрибут data-*="". Этот атрибут гарантировано не обрабатывается браузерами, поэтому его можно использовать для передачи данных в JavaScript.
  • Разработчики могут использовать конструкцию <meta name="" content=""> для задания данных для всего документа. Все имена meta-тегов описаны тут: http://wiki.whatwg.org/wiki/MetaExtensions
  • Разработчики могут использовать атрибут rel="" для описания принадлежности гиперссылки к содержанию страницы. Возможные значения атрибута rel можно увидеть тут: http://wiki.whatwg.org/wiki/RelExtensions
  • Разработчики могут прикреплять  данные с помощью <script type="">.
  • Разработчики могут создавать расширения (plugins) и подключать их с помощью тега <embed>. Так, например, работает Flash.
  • Разработчики могут создавать свои API на JavaScript.
  • Разработчики могут использовать функцию микродаты (microdata) - атрибуты item="" и itemprop="" чтобы создавать конструкции типа има-значение. Это удобно для интеграции с другими приложениями и сайтами.
  • Разработчики могут предлагать создать новые элементы для внесения их в спецификацию. Если такие предложения будут действительно ценными, они будут внесены в спецификацию.

Пока нет инструмента, с помощью которого можно добавлять новые возможности в HTML (т.е. разработка новых элементов и атрибутов) без развернутого обсуждения его возможностей с разработчиками браузеров. Мы не хотим, чтобы разработчики браузеров создавали свои элементы. Для каждого браузера должен быть один стандарт.

Мы просим, чтобы разработчики не создавали новых элементов и атрибутов в HTML без участия рабочей группы WHATWG.

HTML5 должен группировать <dt> и <dd> в элементе <di>

Это проблема таблиц стилей и должна решаться с помощью css. Нет причин чтобы добавлять новый семантический тег в HTML.

Есть несколько причин, почему не следует добавлять такие элементы как <di>:

  • Придется менять механизм обработки кода, а это довольно дорого.
  • Будет слабая обратная совместимость до тех пор, пока все парсеры не обновятся.
  • Будет слабая обратная совместимость в валидации кода.

Цена не оправдает ожидания, тем более с помощью css можно решить не только эту проблему, но и многие другие.

Почему такие элементы как <b>, <i> и <small> до сих пор включены в спецификацию?

На включение этих элементов в спецификацию HTML 5 в значительной степени повлияло их широкое использование и применение их в специфических случаях, в которых другие теги не уместны.

Например, тег <i> помимо простого выделения курсивом (заменяемо с помощью тегов em, cite, dfn или var), используется для обозначение таксономических определений, технических терминов и идиоматических фраз из других языков.

Точно так же с тегом <b>. Помимо стандартных функций, заменяемых элементами <strong>, <h1> - <h6> или <th>, есть и другие, например выделение ключевых слов в документе, или обозначение названия продукта в обзоре.

Некоторые люди говорят, что в таком случае нужно было оставить и элемент <span>. Тем не менее у элементов <b> и <i> есть неоспоримое преимущество: устройства которые не поддерживают таблиц стилей, или вовсе не визуализируют документ (например устройство для проговаривания текста) могут каким-то образом выделить текст внутри тегов <b> и <i>. В случае со <span> - такой возможности нет.

В сущности элементы <b> и <i> передают особую семантику, которая определяется читателем в контексте. Другими словами, они конечно не несут семантику сами по себе, но обозначают, что текст внутри них отличается от окружающего, и читатель должен определить семантику самостоятельно.

Что касается элемента <small>, то он работает точно так же. С помощью него выделяют например копирайт, отказ от ответственности и т.д.

Элемент <cite> должен позволять выделять им имена людей

Мы заметили, что большинство разработчиков используют тег <cite> для выделения текста курсивом, чуть меньшая часть выделяет с помощью <cite> названия и заголовки и уж совсем маленькая доля разработчиков используют его только для выделения цитат.

Таким образом, в данном случае мы не можем сказать, что этот элемент стоит разрабатывать на основе уже существующего опыта.

Возникает вопрос: "какой способ использования этого элемента будет самым лучшим, если мы все таки решим оставить его?". Последним нашим решением было использовать этот элемент  для того, чтобы добавлять типографические функции в заголовки. Однако решение не окончательное.

Что касается имен людей, то они уже сейчас могут выделяться с помощью, например, микроформатов или имен классов.

Элемент <time> должен позволять выделять с помощью него неопределенные времена ("Март") и времена до н.э.

Этот вопрос обсуждался уже много раз. Подробности можно узнать по этим ссылкам:

http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-March/018888.html

http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-August/021745.html

Единственное что мы можем сказать на данный момент - это то, что по данному вопросу много разных мнений. Сложился целый сообществ, которые помогают решить проблему.

<input type="text" > должен поддерживать атрибут minlength=""

Этот вопрос также обсуждался, однако мы ждем когда разработчики браузеров внедрят уже существующие функции форм и только потом продолжим добавлять новые атрибуты.