【问题标题】:Document type does not allow element "ul" here文档类型在此处不允许元素“ul”
【发布时间】:2012-01-12 05:59:11
【问题描述】:

我正在使用 XHTML 1.0 严格文档类型。 我的页面末尾有一些 JavaScript:

$.each(x, function(k, v){
    txt += '<li>';
    txt += '<strong>' + v.description     + '</strong>: $' + v.postage;
    txt += '</li>';

当我在 W3.org 上验证我的文档时,它给了我以下错误:

txt += '<ul><li>';
✉

上面提到的元素是在不允许的上下文中找到的。这可能意味着您的元素嵌套不正确—— 例如“body”部分而不是内部的“style”元素 “head”——或者两个重叠的元素(这是不允许的)。

此错误的一个常见原因是在 HTML 文档中使用了 XHTML 语法。由于 HTML 的隐式封闭元素规则,这 错误会产生级联效应。例如,使用 XHTML a 的“head”部分中“meta”和“link”的“自动关闭”标签 HTML 文档可能会导致解析器推断“头”的结尾 部分和“正文”部分的开头(其中“链接”和 不允许使用“元”;因此报告的错误)。

我是 JavaScript 的初学者,如果有人能帮我解决我页面上的这个验证错误,那就太好了。

【问题讨论】:

  • 你刚刚回答了自己。 W3C 抱怨您的文档的 部分中没有 JavaScript 代码。大多数人将他们的脚本放在一个单独的文件中,然后将其包含在标题部分中
  • 您的(内联)脚本是否包含在CDATA-Tags 中?
  • @Lee Scott:从什么时候开始,&lt;script&gt; 不允许在 &lt;head&gt; 之外添加标签?
  • 我真的不知道..但这就是错误的意思,它可能与他声明的 HTML 类型有关
  • @LeeScott - 这不是错误的意思,它只提供有关问题常见原因的建议,根本没有提到脚本块(它 style 元素应该放在头部,所以也许你把两者混为一谈了?)。查看真正问题的答案。

标签: javascript html css


【解决方案1】:

原因是您位于仍由 XML 解析器解析的内联脚本元素中(理论上)。您在 JavaScript 字符串中的标签可能会被视为元素。

一种解决方案(最好的解决方案,您应该已经这样做了)是简单地将您的 JavaScript 移动到外部文件并链接到它:

<script type="text/javascript" src="my/script.js"> </script>

其他的涉及转义或使用&lt;![CDATA[ 块,通常是不愉快的。

【讨论】:

  • Minitech,我是否应该将此脚本从 的末尾并将其保存在具有 JS 扩展名的文件中并按照您上面的建议进行链接?
【解决方案2】:

验证器错误地选择了脚本块内的 HTML 标记。将您的脚本移至外部文件以解决此问题。

验证器抱怨我的 JavaScript 中的某些内容!

很可能,您应该阅读 WDG 优秀的脚本部分 常见 HTML 验证问题文档。

见:http://validator.w3.org/docs/help.html#faq-javascript

【讨论】:

  • 您好,我有一个脚本链接,它已经链接在 标记内。但我知道我的脚本在我的页面内也需要一些 来使我的脚本发挥作用。我应该将 代码移动到 部分吗?
  • 您的帖子说它位于页面末尾,而不是外部文件。
  • 使用类似: 并将您的代码放入外部文件中。
  • 非常感谢你们,你们的回答很有帮助,现在问题已经解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多