2011-02-02 3 views
3

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

Line 9, Column 35: element "IFRAME" undefined
<iframe name="test" src="test.htm"></iframe>

You have used the element named above in your document, but the document type you are using does not define an element of that name. This error is often caused by:

  • incorrect use of the "Strict" document type with a document that uses frames (e.g. you must use the "Frameset" document type to get the "" element),
  • by using vendor proprietary extensions such as "" or "" (this is usually fixed by using CSS to achieve the desired effect instead).
  • by using upper-case tags in XHTML (in XHTML attributes and elements must be all lower-case).

Это то, что я вырезал 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> 

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

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

+4

Возможно, это недействительно в строгом DTD. Можете ли вы перейти к Transitional? – Craig

+0

@Craig: Согласно W3Schools, все в порядке, но это первое, что я попробую. – Mikaveli

+2

@Craig: вы правы, он проходит с переходным DTD - так почему он определен, но не разрешен? @Mikaveli: Я бы не стал полагаться на точность страниц W3Schools в любом случае. – jujurawrs

ответ

5

"Why is it disallowed in a strict doctype, even though it's defined in the specification?

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

я могу думать о двух причинах, почему они могли бы подумать, что:

  • "Why do iframes suck?".
  • делает (в теории) мало, что не может быть достигнуто с <object>
+1

Считаете ли вы приемлемым использование iframe, чтобы сервер отображал содержимое, где JavaScript отключен? Я обращаюсь к веб-сервису с использованием JavaScript для отображения * некоторых * содержимого страницы, но я хотел бы вернуться в iframe, где сервер может сделать запрос, если JS недоступен. – jujurawrs

+0

@jujurawrs - это довольно субъективный и спорный вопрос, поэтому я не решаюсь обсуждать его здесь. – Quentin

+0

Насколько ты очень дипломатичен. Спасибо за ваше время :-) – jujurawrs

3

IFrame не входит в HTML строгой. Для проверки попробуйте использовать элемент объекта.

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

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

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

Смежные вопросы