2012-02-23 99 views
0

我使用jQuery把文字变成div如下:即不使用HTML符号在jQuery的

$("#commentview").html(rowData.Text); 

如果,例如,rowData.Text"I haven't seen this.",在IE的结果显示:

"I haven't seen this." 

但是,在Chrome中,'正确显示。

"I haven't seen this." 

任何想法,为什么会这样,如果有解决办法?

谢谢!

UPDATE

我被Chrome网络开发者工具上当。我已经给rowData.Text添加了一块手表,它向我展示了"I haven't seen this.",所以我认为这就是我正在合作的。但是,当我看着那个填充rowData实际JSON响应它有"I haven't seen this."

+0

这两个例子都是一样的......不知道你在说什么。 – Sparky 2012-02-23 23:52:58

+0

我在这两个句子中没有看到不同,你能澄清吗? – 2012-02-23 23:53:15

+1

有'''那里而不是单引号字符。 – 2012-02-23 23:54:12

回答

2

我的猜测是,您的数据实际上包含'和浏览器会自动把它变成一个单引号和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

+0

是的,我很确定'''不被老版本IE支持,因为它不是(或者不是't)一个有效的html实体,它是作为一个xml实体引入的,因此只能在xhtml中工作,尽管这些事情总会发生,但一些浏览器无论如何都乐意支持它。你可以使用'''而不是''',它可以在IE中使用。 – nnnnnn 2012-02-24 00:04:31

+0

你是对的。查看我的更新。所以现在的问题是:什么是最好的方式来规范客户端? – Paul 2012-02-24 00:09:00

+0

如果你必须在客户端上做这个简单的正则表达式应该做的伎俩。 – 2012-02-24 00:10:39

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

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

+0

嘿!你的代码应该做什么? – 2012-02-24 00:24:40

+0

替换任何'with&#39。并将任何字符串替换为正确的char代码。所以你永远不会有其他问题。 – Aminadav 2012-02-24 01:44:16

+0

我喜欢这个想法,但在我的具体情况下,源数据包含''',而不是''',因此您的代码无法将其转换为IE可以使用的内容。 – Paul 2012-02-24 16:17:14

相关问题