IE不在jQuery中使用HTML符号

时间:2012-02-23 23:48:24

标签: jquery

我正在使用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."

2 个答案:

答案 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')

这是我在这里的第一个答案,所以请投票或反馈,这让我很兴奋!