【问题标题】:Why won't <iframe> elements validate in HTML 4.01?为什么 <iframe> 元素在 HTML 4.01 中无效?
【发布时间】:2011-06-19 21:34:28
【问题描述】:

我只是在检查将&lt;iframe&gt; 元素放在&lt;noscript&gt; 元素中作为显示动态内容的后备元素是否有效。它使用 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>

&lt;iframe&gt; 元素在 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


【解决方案1】:

“为什么在严格的文档类型中不允许它,即使它在规范中定义?

很多东西在规范中定义,但在 Strict 中是不允许的。 &lt;font&gt; 浮现在脑海中。这些是规范的开发人员认为需要记录的东西,当时在浏览器中使用,但应该放弃。

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

  • Why do iframes suck?”。
  • &lt;iframe&gt;(理论上)几乎没有 &lt;object&gt; 无法实现的

【讨论】:

  • 您认为使用 iframe 允许服务器显示禁用 JavaScript 的内容是否可以接受?我正在使用 JavaScript 访问 Web 服务以显示页面的 一些 内容,但我想退回到 iframe,如果 JS 不可用,服务器可以在其中发出请求。跨度>
  • @jujurawrs - 这是一个相当主观和有争议的问题,所以我不愿在这里讨论它。
  • 你真是太外交了。感谢您的时间:-)
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-17
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 2017-07-12
    • 2010-12-24
    相关资源
    最近更新 更多