为什么<iframe>元素不会在HTML 4.01中验证?</iframe>

时间:2011-02-02 10:51:31

标签: html iframe w3c-validation html4

我只是检查将<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中被禁止,即使它在规范中定义了?”。

2 个答案:

答案 0 :(得分:5)

  

“为什么在严格的doctype中不允许它,即使它在规范中定义了?

规范中定义了很多东西,但在Strict中不允许。我想起了<font>。这些是规范的开发人员认为需要记录的东西,当天在浏览器中使用,但应该从中转移出去。

我可以想到他们可能想到的两个原因:

答案 1 :(得分:3)

iframe不包含在html strict中。要进行验证,请尝试使用object元素。

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

您还应该向对象元素添加width和height属性。请注意,与iframe不同,对象不能成为任何页面链接的目标。

除非出于某种原因你特别需要html4严格验证,否则最好使用html5 doctype。