Firefox vs. IE: innerHTML 处理方式

6
经过数小时的调试,我发现在FireFox中,DOM的innerHTML反映了标记中实际存在的内容,但在IE中,innerHTML反映了标记中的内容以及用户或动态(即通过Javascript)所做的任何更改。
有其他人发现这是真的吗?有什么有趣的解决方法可以确保两者表现相同?
4个回答

11

我使用jQuery的.html()方法,以便在各种浏览器上获得一致的结果。


问题在于jQuery.html()不能产生一致的结果。引用自jQuery文档相关部分:“该方法使用浏览器的innerHTML属性。某些浏览器可能无法返回与原始文档中完全复制HTML源代码相同的HTML。例如,如果属性值仅包含字母数字字符,则Internet Explorer有时会省略属性值周围的引号。” - merryprankster

9
我同意Pat的观点。在现有的JavaScript框架中,编写自己的代码来处理跨浏览器兼容性已经没有太多意义了。几乎任何口味的框架都有(一些非常小),它们专注于抽象出所有浏览器之间的差异。它们进行了比你可能想象的更多的测试。
像jQuery或Yahoo的YUI(想想有多少人每天使用Yahoo Javascript以及使用的各种浏览器)比你我能想到的任何片段都要经过更多的路试。

2

使用好的库是解决浏览器不一致性的好方法,而jQuery是我通常推荐的库——如果你遇到特别需要修改表单元素的问题,jQuery拥有一些非常有用的插件,专门关注于表单操作和评估。


1
使用原型和$("thisid")语法,而不是document.getElementById("thisid")可能对你有帮助。这对我起作用了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接