2013-04-10 201 views
0
<label for="abc" id="xyz">http://abc.com/player.js</xref>?xyz="foo" </label> 

被忽略了浏览器标签文本忽略HTML标签

</xref> tag 

值。因此,所显示的输出是

http://abc.com/player.js?xyz="foo" 

,但我想在浏览器中显示

http://abc.com/player.js</xref>?xyz="foo" 

请帮助我如何实现这一目标。

回答

0

我误解了这个问题,我认为URI将被用在JavaScript的其他地方。但是这个问题非常清楚地表明,URI只是被渲染为文本。

如果正在显示的文本是从服务器传入的,那么最好的办法就是在将它打印在页面上之前进行编码(或者如果您使用的是模板引擎,那么您很可能只是对其进行编码在模板上)。几乎任何Web框架/模板引擎都应具有此功能。

但是,如果它只是静态HTML,只需手动编码字符。如果你不知道把你的头顶部的代码,你可以使用一些在线转换器的帮助,比如像:

HTML编码/解码:
http://htmlentities.net/


老答案:

尝试使用JavaScript函数encodeURI使用它之前编码URI:

我不认为你就可以得到显示 </xref>标签作为是浏览器

decodeURI(yourEncodedURI); 

所以,最后,但你:

encodeURI('http://abc.com/player.js</xref>?xyz="foo"'); 

可以使用decodeURI也对其进行解码如果需要的话将能够保留它(使用encodeURI/decodeURI),并在代码中使用它,如果这是你所需要的。

小提琴:
http://jsfiddle.net/rk8nR/3/

更多信息:
When are you supposed to use escape instead of encodeURI/encodeURIComponent?

+0

我喜欢这个http://jsfiddle.net/rk8nR/3/ – javalearner 2013-04-10 10:08:18

+0

为什么你会用正确的方式在标记中使用客户端脚本? – 2013-04-10 10:29:34

+0

lol @ user835785 HTML部分没有丝毫贡献。 – Jace 2013-04-11 00:40:48

1

你应该做这样的

"http://abc.com/player.js%3C/xref%3E?xyz=foo" 

网址应正确编码的工作是有效的URL

使用encodeURI为一个有效的

var ValidURL = encodeURI("http://abc.com/player.js</xref>?xyz=foo"); 

网址进行编码见this答案在encodeURI获得更好的知识。

2

它不被忽视。它被视为结束标记(对于没有开始标记的非HTML元素)。如果您想让<字符显示为数据而不是“开始标记”,请使用&lt;

也就是说,这是一个URL和原材料<>"人物不应该出现在URI的反正。因此,将其编码为http://abc.com/player.js%3C/xref%3E?xyz=%22foo%22

+0

谢谢,没有任何JS库功能,这是否? – javalearner 2013-04-10 09:38:31

+1

'encodeURI'和'encodeURIComponent'是核心JavaScript的一部分 – Quentin 2013-04-10 09:38:51