HTML 将 NOSCRIPT 放入 UL 是否合法?

Is this HTML legal, putting NOSCRIPT inside UL?

这合法吗?

<UL>
  <NOSCRIPT>
    <LI>Foo
  </NOSCRIPT>
  <LI>Bar
</UL>

我 运行 它通过了一个验证器,它说不,但我不太确定它理解 NOSCRIPT

这是不合法的。 UL may only contain LI elements and script-supporting elements — 并且 NOSCRIPT 不是脚本支持元素。尽管 NOSCRIPT 的处理方式因脚本环境而异,但这种特殊情况并不相关,因为它涉及 NOSCRIPT 的内容模型,但此处的规则适用于 UL 的内容模型.

这是无效的,但为什么你不这样重复你的 ul 呢?一种用于 Js 和一种用于非 Js。

<!DOCTYPE html>
<head>
<title>test</title>
</head>

 <noscript>
   <ul>
     <li>Foo</li>
     <li>Bar</li>
   </ul>
 </noscript>

<script>
   document.write("<ul><li>ShowIfJsAvailable</li></ul>");
</script>

您最好先将页面设计为在没有 javascript 的情况下工作,然后您可以使用 javascript(或者更好,JQuery)更改页面。

之前的答案已经指出 noscript 结构无效,所以放弃这个想法。

首先编写没有 javascript 的页面,然后修改 javascript 的结构,就像您希望 javascript 的样子一样。在页面加载后删除或添加元素 - 这是 JQuery 和 $(document).ready() 真正值得的地方!

另外,您的 html 文件看起来会更干净,而 js 文件只有在启用脚本时才会发挥作用。

并且不要使用那个 document.write(),它只会使事情复杂化。