Skip to content

innerHTML在IE下会改变原有HTML格式

其实这个事情有很多次都知道会这种现象存在,因为这一次是利用正则解析页面的某段HTML代码,因此对于是否“原样”获取HTML至关重要。

“原样”

对于innerHTML属性来讲是否能够真正“原样”获取所需要的HTML片断呢?其实不然,innerHTML获取的是运行时HTML(即:已经被渲染过的代码),我们可以先做个简单的实验:

<table><tr><td>test</td></tr></table>

这是很简单的表格HTML代码,当你尝试obj.innerHTML发现获取的结果会自动加入<tbody>标签。这是所有浏览器都会做的,你不要以为FF或Chrome就是原样了。
我很爱现,因为讲到这个时我就想到zoom这是IE特色,他可以帮助我们对某个节点重新渲染。因此他可以帮助我解决一些问题,特别CSS上面的,而这里恐怖用不上。
既然从innerHTML原样做不到,而以下有几种办法可以帮助我解决我要的问题:

解决办法

注释法:将所需要的HTML片断用“<!– –>”注释掉,至少目前所有的浏览器对注释的HTML片断不做渲染。同样跟放在textarea中,还是注释来得更真实一些。
改变读取方式:这一点可能要跟自己的需求而定,目前第三方的javscript框架对XHTML的解析非常方便,我的意思你明白的。

相关日志

Categories: 技术.

Tags: ,

Comment Feed

No Responses (yet)



Some HTML is OK

or, reply to this post via trackback.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word