【发布时间】:2011-06-19 21:34:28
【问题描述】:
我只是在检查将<iframe> 元素放在<noscript> 元素中作为显示动态内容的后备元素是否有效。它使用 HTML 5 doctype 验证良好,但对于 HTML 4.01,我收到以下错误:
第 9 行,第 35 列:元素“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 规范中定义,网址如下:http://www.w3.org/TR/html401/present/frames.html#h-16.5。
它以过渡文档类型通过,所以我想我的问题是“为什么在严格的文档类型中不允许它,即使它在规范中定义?”。
【问题讨论】:
-
可能在严格的 DTD 中无效。你能搬到过渡期吗?
-
@Craig:根据 W3Schools 的说法,这没问题,但这也是我要尝试的第一件事。
-
@Craig:你说得对,它通过过渡 DTD 传递 - 那么为什么定义它但不允许? @Mikaveli:无论如何我都不会依赖 W3Schools 页面的准确性。
标签: html iframe w3c-validation html4