使用jQuery的datatable插件的时候发现,IE8下显示异常,仔细调查一番,发现是浏览器对innerHTML的差异导致的。
实例代码:
var nTd = document.createElement('td');
nTd.innerHTML = 'abc&def';
alert(nTd.innerHTML);
IE8 alert结果: abc
firefox 24 alert结果:abc&def
可以看出,当把字符串传给innerHTML的时候,浏览器进行了处理,比如大小写转换,对于'<span>abc</SPAN>':
IE8 alert结果: <SPAN>abc</SPAN>
firefox 24 alert结果:<span>abc</span
对于'<span>abc&def</SPAN>':
IE8 alert结果: <SPAN>abc&def</SPAN>
firefox 24 alert结果:<span>abc&def</span
对于'<span>abc&def</SPAN>':结果同上
IE8 alert结果: <SPAN>abc&def</SPAN>
firefox 24 alert结果:<span>abc&def</span
结论:
可以认为这是一个bug,在对字符串进行处理的时候,IE8做的有问题。可以对存入datatable表格中的数据做HTML escape处理,可以避免这个bug。
具体权威一点的解释还没有找到,如果谁知道,欢迎留言!