在noscript中重复id

时间:2012-01-17 19:26:02

标签: javascript html dom

启用Javascript时,以下HTML / Javascript是否有效(严格)?是否忽略了noscipt标记中的id?

<body>
    <noscript>
        <div id="test"></div>
    </noscript>
    <script type="text/Javascript">
        var el = document.createElement('span');
        el.id = 'test';
        document.body.appendChild(el);
    </script>
</body>

1 个答案:

答案 0 :(得分:10)

启用javascript后,<noscript>的内容为raw text,而非元素内容,因此<noscript>元素的子元素是值为"\n <div id="test"></div>\n"的文本节点DIV元素。 getElementById("test")找不到ID为<div>的{​​{1}},因为没有这样的元素,只有一个文本节点,如果它出现在原始文本上下文之外,其内容将解析为DIV。

http://www.w3.org/TR/html5/scripting-1.html#the-noscript-element

  

在head元素之外,如果为"test"元素启用了脚本
  noscript元素必须仅包含文本...