我只是检查将<iframe>
元素放在<noscript>
元素中作为显示动态内容的后退是否有效。它使用HTML 5 doctype进行了验证,但对于HTML 4.01,我收到以下错误:
第9行,第35列:元素“IFRAME”未定义
&lt; iframe name =“test”src =“test.htm”&gt;&lt; / iframe&gt;您在文档中使用了上面提到的元素,但您使用的文档类型未定义该名称的元素。此错误通常由以下原因引起:
- 对使用框架的文档错误地使用“严格”文档类型(例如,您必须使用“框架集”文档类型来获取“”元素),
- 使用供应商专有扩展,例如“”或“”(这通常通过使用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>
{4.0}规范中的<iframe>
元素位于以下网址:http://www.w3.org/TR/html401/present/frames.html#h-16.5。
它传递了一个过渡的doctype,所以我想我的问题是“为什么它在严格的doctype中被禁止,即使它在规范中定义了?”。
答案 0 :(得分:5)
“为什么在严格的doctype中不允许它,即使它在规范中定义了?
规范中定义了很多东西,但在Strict中不允许。我想起了<font>
。这些是规范的开发人员认为需要记录的东西,当天在浏览器中使用,但应该从中转移出去。
我可以想到他们可能想到的两个原因:
<iframe>
确实(理论上)<object>
答案 1 :(得分:3)
iframe不包含在html strict中。要进行验证,请尝试使用object元素。
<object data="test.html" type="text/html"></object>
您还应该向对象元素添加width和height属性。请注意,与iframe不同,对象不能成为任何页面链接的目标。
除非出于某种原因你特别需要html4严格验证,否则最好使用html5 doctype。