Почему элементы ‹iframe› не проверяются в HTML 4.01?

Я просто проверял, допустимо ли помещать элемент <iframe> внутри элемента <noscript> в качестве отступления для отображения динамического содержимого. Он отлично прошел проверку с типом документа HTML 5, но для HTML 4.01 я получаю следующую ошибку:

Строка 9, столбец 35: элемент IFRAME не определен
‹iframe name = test src = test.htm› ‹/iframe›

Вы использовали указанный выше элемент в своем документе, но используемый вами тип документа не определяет элемент с таким именем. Эта ошибка часто бывает вызвана:

  • неправильное использование типа документа Strict с документом, который использует фреймы (например, вы должны использовать тип документа Frameset для получения элемента),
  • с помощью проприетарных расширений поставщика, таких как или (обычно это исправляется с помощью CSS для достижения желаемого эффекта).
  • с помощью тегов в верхнем регистре в XHTML (в атрибутах и ​​элементах XHTML все должны быть в нижнем регистре).

Вот что я сократил до HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 
          "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
   <title>I AM YOUR DOCUMENT TITLE REPLACE ME</title>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
   <div>
     <iframe name="test" src="test.htm"></iframe>
   </div>
</body>
</html>

Элемент <iframe> определен в спецификации HTML 4.01 по следующему URL-адресу: http://www.w3.org/TR/html401/present/frames.html#h-16.5.

Он проходит с переходным типом документа, поэтому я предполагаю, что мой вопрос: почему он запрещен в строгом типе документа, даже если он определен в спецификации ?.


person jujurawrs    schedule 02.02.2011    source источник
comment
Возможно, это не действует в строгом DTD. Можете ли вы перейти на переходный период?   -  person Craig    schedule 02.02.2011
comment
@Craig: По словам W3Schools, все в порядке, но это первое, что я бы тоже попробовал.   -  person Michael    schedule 02.02.2011
comment
@Craig: вы правы, он проходит с переходным DTD - так почему он определен, но не разрешен? @Mikaveli: Я бы все равно не стал полагаться на точность страниц W3Schools.   -  person jujurawrs    schedule 02.02.2011


Ответы (2)


"Почему это запрещено в строгом doctype, даже если оно определено в спецификации?

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

Я могу придумать две причины, по которым они могли подумать так:

person Quentin    schedule 02.02.2011
comment
Считаете ли вы приемлемым использование iframe, чтобы сервер мог отображать контент с отключенным JavaScript? Я обращаюсь к веб-службе с помощью JavaScript для отображения некоторого содержимого страницы, но я хотел бы вернуться к iframe, где сервер может сделать запрос, если JS недоступен. - person jujurawrs; 02.02.2011
comment
@jujurawrs - это довольно субъективный и аргументированный вопрос, поэтому я не решаюсь обсуждать его здесь. - person Quentin; 02.02.2011
comment
Как очень дипломатично с вашей стороны. Спасибо за ваше время :-) - person jujurawrs; 02.02.2011

iframe не включен в html strict. Для проверки попробуйте вместо этого использовать элемент объекта.

<object data="test.html" type="text/html"></object>

Вы также должны добавить атрибуты ширины и высоты к элементу объекта. Обратите внимание: в отличие от iframe объекты не могут быть целью для каких-либо ссылок на страницы.

Если по какой-то причине вам не нужна строгая проверка html4, лучше использовать doctype html5.

person leebriggs    schedule 02.02.2011