2013-04-10 161 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