2013-11-22 88 views
0

我有一個小問題,一直在竊聽我,我似乎無法找到一個可行的解決方案。我有一個字符串,它來自以下格式的xml文檔。JavaScript - decodeURI渲染爲HTML

var str="<p><a href="http://antwrp.gsfc.nasa.gov/apod/ap131120.html"><img src="http://antwrp.gsfc.nasa.gov/apod/calendar/S_131120.jpg" align="left" alt="What are black hole jets made of?" border="0" /></a> What are black & hole jets made of?</p><br clear="all"/>"; 

我用

var dec = decodeURI(str); 

我想呈現爲HTML,而不是看我得到下面的輸出的輸出。

<p><a href="http://antwrp.gsfc.nasa.gov/apod/ap131120.html"><img src="http://antwrp.gsfc.nasa.gov/apod/calendar/S_131120.jpg" align="left" alt="What are black hole jets made of?" border="0" /></a> What are black &amp; hole jets made of?</p><br clear="all"/> 

我試圖發送此解碼數據的HTML文檔與

document.write(dec) 

document.getElementById("output").innerHTML=dec; 
+2

該輸出有什麼問題?我看起來沒問題。另外我不認爲這是decodeURI的輸出......? – Christoph

+0

Youu是正確的decodeURI根本沒有改變字符串。感謝指針 – user2040454

回答

1

您可以手動替換所有實體

function unescape(str){ 
    return str.replace(/&lt;/g, "<") 
       .replace(/&gt;/g, ">") 
       .replace(/&quot;/g, '"') 
       .replace(/&amp;/g, "&"); 
} 

var str="&lt;p&gt;&lt;.../&gt;"; 

document.getElementById("output").innerHTML = unescape(str); 
+0

我認爲它不是一個有效的方式,你必須提供每個實體,如果出現在字符串? –

+0

你需要轉義'<>「&'使其成爲」有效「的html。其他實體很好去 –

+0

這很好,謝謝 – user2040454

0

你困惑與URL encodinghtml/xml entities。它們是兩種不同的編碼方法。例如,在URL編碼,<編碼爲%3C,但對於實體,它是&lt;

如果你運行一個console.log(decodeURI(str)),你會發現大多數事情一樣&quot保持不變,因爲decodeURI()是不是想解碼HTML實體。

爲了解決這個問題,你可以在XML返回正確的URL編碼:

var str="%3Cp%3E%3Ca href=%22http://antwrp.gsfc.nasa.gov/apod/ap131120.html%22%3E%3Cimg src=%22http://antwrp.gsfc.nasa.gov/apod/calendar/S_131120.jpg%22align=%22left%22alt=%22What are black hole jets made of?%22border=%220%22/%3E%3C/a%3E What are black hole jets made of?%3C/p%3E%3Cbr clear=%22all%22/%3E"; 

或者您可以使用a piece of Javascript function你有什麼對現在的實體進行解碼。

演示:http://jsfiddle.net/Ly4ZR/

0

有一個JavaScript Library這可能會幫助你與此有關。看到這個Fiddle

var str="&lt;p&gt;&lt;a href=&quot;http://antwrp.gsfc.nasa.gov/apod/ap131120.html&quot;&gt;&lt;img src=&quot;http://antwrp.gsfc.nasa.gov/apod/calendar/S_131120.jpg&quot; align=&quot;left&quot; alt=&quot;What are black hole jets made of?&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; What are black &amp;amp; hole jets made of?&lt;/p&gt;&lt;br clear=&quot;all&quot;/&gt;"; 

$("#output").html(_.unescape(str));