2012-02-23 53 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

相關問題