我正在使用jQuery将文本放入div
,如下所示:
$("#commentview").html(rowData.Text);
例如,如果rowData.Text
为"I haven't seen this."
,则在IE中结果显示为:
"I haven't seen this."
但是,在Chrome中,'
显示正确。
"I haven't seen this."
任何想法为什么会这样,如果有解决办法?
谢谢!
更新
我被Chrome网络开发者工具所欺骗。我已经向rowData.Text
添加了一只手表,它向我显示"I haven't seen this."
,所以我认为这就是我正在使用的内容。但是,当我查看填充rowData
的实际JSON响应时,它有"I haven't seen this."
答案 0 :(得分:2)
我的猜测是,您的数据实际上包含'
,并且Chrome会自动将其转换为单引号而IE则不会。因此,在附加消息之前,请在服务器上清理文本响应或在客户端上对其进行规范化。
正如我们在这里看到的那样:http://james.padolsey.com/jquery/#v=1.6.2&fn=jQuery.fn.html jQuery不会乱丢单引号或类似的东西。最后.html()
使用.innerHTML
,因此您应该考虑简化问题的解决方案。
尝试console.log
点击您的rowData.Text
并查看它是否确实包含'
,然后执行以下操作:
$("#commentview").html(rowData.replace(/'/g, ""));
但更好的方法是在服务器端解决此问题,因为'
不是有效的HTML实体:https://stackoverflow.com/a/2083770/236135
答案 1 :(得分:0)
您可以使用我为此编写的这个跨浏览器脚本:
x="abc'<Hello 'World' in Tag>";
for (var i=0,y='';i<x.length;i++) y+='&#' + x.charCodeAt(i) + ';'
b.innerHTML=y
b=document.createElement('div')
这是我在这里的第一个答案,所以请投票或反馈,这让我很兴奋!