2013-11-22 91 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));