我正在开发一个JS插件(Just Show Me The Colors),它可以遍历一个DOM树(不受我的控制),并用TextNodes
替换某些span
。
某些上下文会导致无效标记,例如内部svg:text
节点。但是,此代码不会在Chrome / FF中引发任何错误:
var text = document.createElementNS("http://www.w3.org/2000/svg", "svg:text");
text.appendChild(document.craeteElement("span"));
即使它是无效的标记。
同样,允许在div
内放置p
,但可以(TM)。
但是,也允许在span
标记内放置script
但无法正常工作。
有没有办法可以在运行时确定我生成的标记是否有效或是否正常工作?
答案 0 :(得分:1)
最简单的解决方案可能是保留一个可以有效包含范围的元素列表。
这是一个列表:http://w3-video.com/Web_Technologies/HTML5/span/html5_span_tag_nested.php
答案 1 :(得分:1)
您只能根据您希望遵守的定义,使用给定元素中允许的元素名称列表(井,数组)来执行此操作。浏览器不了解这些问题。 HTML有几种不同的定义,它们具有不同的元素内容模型。
“工作”是否是一个不同的问题。您应该指定一个更具体的问题,包括您对预期或希望发生的事情的描述; “作品”不是描述。
请特别注意span
在script
内无效,并且普通HTML(或XHTML)解析创建的script
元素不包含任何span
元素(或这个问题的任何其他因素)。如果您创建包含script
的{{1}},则后果取决于浏览器对span
元素的处理方式,即他们如何找到他们将解析并解释为脚本代码的内容。