我使用innerHTML来获取数据并将其存储在数据库中。当我在firefox中尝试使用引号(“或”)来表示属性。但在IE中,我没有得到属性的引号(“或”)。这是一个浏览器问题吗?对此有任何答案。
由于
答案 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字符串。
好消息是,现在innerHTML
是being standardized,并且标准清楚地表明结果应该是XML文档中的有效XML(XHTML文档是),并且因为Microsoft更多参与并致力于这一领域的标准,而不是多年来,IE9可能会在这方面做得更好。