InnerHTML同时警告它在Firefox中使用双引号但在IE中没有警报

时间:2010-04-28 09:17:45

标签: javascript html internet-explorer firefox innerhtml

我使用innerHTML来获取数据并将其存储在数据库中。当我在firefox中尝试使用引号(“或”)来表示属性。但在IE中,我没有得到属性的引号(“或”)。这是一个浏览器问题吗?对此有任何答案。

由于

2 个答案:

答案 0 :(得分:2)

是的,这是一个浏览器问题,因为IE就是这样做的。请注意,引号对于HTML中的所有属性不是必需的,因此不会使IE的输出无效。如果你想要XHTML,你必须自己通过走DOM来创建它。

答案 1 :(得分:1)

是。当您使用innerHTML时,浏览器会根据元素中的DOM元素和属性重新创建HTML。不同的浏览器之间的区别不同,因为直到最近还没有标准(innerHTML是微软的创新,几乎所有人都采用了这种标准,并且正在HTML5中进行标准化。如果你的标记看起来像这样:

<span style="color: red" id="foo">...</span>

IE的innerHTML将是:

<SPAN id=foo style="COLOR: red">...</SPAN>

...而Firefox和Chrome非常接近你原来的版本。

IE为您提供的是有效的HTML(您可以省略对其中没有空格的属性的引号,并且UPPER CASE标记名也可以),但不是有效的XHTML(如果这对您来说很重要)正在做。)

如果您愿意,可以自己遍历DOM树,或者对IE的结果进行后期处理,您可以构建自己的(X)HTML字符串。

好消息是,现在innerHTMLbeing standardized,并且标准清楚地表明结果应该是XML文档中的有效XML(XHTML文档是),并且因为Microsoft更多参与并致力于这一领域的标准,而不是多年来,IE9可能会在这方面做得更好。