2010-09-25 20 views
2

图像标记(<img src="" alt="" />),换行符标记(<br />)或水平规则标记(<hr />)在末尾具有斜杠以将自身标记为自闭标记。但是,当这些对象是由javascript创建的,并且我查看源代码时,它们没有斜杠,因此W3C标准使它们无效。当对象(例如img标签)由javascript创建时,它没有结束标签。我如何使W3C有效?

我该如何克服这个问题?

(我使用javascript原型库)

+0

重要吗?你为什么需要这种行为? – 2010-09-25 23:23:56

+0

准确地如何以及何时创建标签? – Guffa 2010-09-25 23:26:08

+1

W3C标准仅适用于静态html,您不需要为dhtml关闭标签。 W3c验证器不解析你的动态html。 – jcubic 2010-09-25 23:33:20

回答

6

您如何看待'源头'? JavaScript创建的元素不会出现在“查看源代码”中。你在说什么innerHTML

如果是这样,那么你所得到的是浏览器在文档中DOM节点的序列化。在浏览器中,页面的HTML标记不是文档状态的权威存储区。该文件被存储为Node对象的负载;当这些对象被序列化回标记时,该标记可能看起来不像被解析以获取文档的原始HTML页面标记。

所以不管是哪个的:

<img src="x" alt="y"/> 
<img src="x" alt="y"> 
<img alt = "y" src="x"> 
img= document.createElement('img'); img.src= 'x'; img.alt= 'y'; 

用于创建一个HTMLImageElement节点,当你连载它使用innerHTML浏览器通常会产生相同的HTML标记。

如果浏览器是原生XML模式(即因为页面是担任application/xhtml+html),那么innerHTML价值肯定会包含类似<img/>自闭的语法。 (在某些浏览器中,您也可能会看到像名称空间这样的其他XML内容)。

但是,如果您今天更有可能在媒体类型text/html下为“HTML兼容的XHTML”服务,实际上完全使用XHTML,所以当你访问innerHTML时你会得到老派的HTML,而你不会看到自闭的/>表单。

2

这是没有问题的。 W3C标准仅涉及原始文件中的标记,之后的任何更改都直接作用于DOM(不是您的酱码),这也是W3C标准。这绝不会影响您网站的标准合规性。要进一步细化,HTML和XHTML只是构建DOM(文档对象模型)的不同方式,它最好被描述为用于描述网页的节点的大型树结构。一旦DOM被构建,用于构建它的语言就无关紧要了,如果愿意的话,甚至可以使用纯JavaScript来构建DOM。

+0

*酱*代码?哈哈:) – alex 2010-09-25 23:54:06

+0

@alex:什么?虚拟信件非常好吃! – Hello71 2010-09-25 23:56:58

0

它从来没有重要!,我用来确认W3C的每个标准,但它变成了一个愚蠢的东西! 只要符合safe其中的一个,它们允许您对跨浏览器进行编码,而且您的案例绝对不是其中之一,因为它绝不是问题并且不会造成任何问题。