感謝您的閱讀!在javascript中打印html標籤
var data = "<html><head><title>Hello</title></head><body>Hello Body</body></html>";
我想打印data
包括HTML代碼,而無需瀏覽器中呈現的HTML標籤,只是顯示「你好身體」。
我想:
str = str.replace("<", "");
但不成功。
感謝您的閱讀!在javascript中打印html標籤
var data = "<html><head><title>Hello</title></head><body>Hello Body</body></html>";
我想打印data
包括HTML代碼,而無需瀏覽器中呈現的HTML標籤,只是顯示「你好身體」。
我想:
str = str.replace("<", "");
但不成功。
data = data.replace(/</g, "<").replace(/>/g, ">");
當瀏覽器遇到<
(這被稱爲字符實體),它將與文字「<」取代它,讓您沒有他們得到呈現在頁面上顯示的HTML標記。
/</g
是一個正則表達式,它只是表示「在字符串中匹配所有'<'」,而g
表示全局。如果沒有g
,它只會替換遇到的第一個「<」。
還有一個最後的注意事項,使用庫(如jQuery)來做到這一點更好。這是一種容易出錯並錯過邊緣案例的東西。讓硬化,經過充分測試和安全的庫函數爲您做好準備。
爲簡單起見。 – JClaspill 2011-04-11 21:04:03
太棒了!真的非常感謝TON的這段代碼。這有幫助! – 2011-04-11 22:09:19
我推薦以下基督徒斯克伯拉斯的回答,他的方法更好。 – 2011-04-11 22:29:03
這是醜陋的,但你可以試試這個(從原型的實施escapeHTML()
借用):
var data = "<html> <head> <title> Hello </title> </head> <body> Hello Body </body> </html>"
.replace(/&/g,'&')
.replace(/</g,'<')
.replace(/>/g,'>');
document.write(data);
當然,創造一個小幫手功能,效果會更好。
謝謝Cory!這工作! – 2011-04-11 22:25:23
的實際(和更安全的固定)如下:
function htmlspecialchars(text){
return jQuery('<div/>').text(text).html();
}
在純JavaScript,這將是:
function htmlspecialchars(text){
var tnd=document.createTextNode(text);
var div=document.createElement("DIV");
div.appendChild(tnd);
return div.innerHTML;
}
OP沒有指定jQuery,但這非常聰明! +1 – 2011-04-11 21:17:30
@Pekka那麼,我正在輸入純粹的JavaScript實現,它需要一些時間:)。 – Christian 2011-04-11 21:24:36
不錯!這比替換'<' and '>'要優越得多。 – 2011-04-11 21:26:13
打印數據以什麼/在哪裏? – rsplak 2011-04-11 20:59:31
準確地說,「打印」是什麼意思?打印哪裏? – 2011-04-11 20:59:35
我認爲他意味着將該字符串寫入瀏覽器,使標籤轉義,以便它們在頁面上可見而不是解析到DOM中。 – Tesserex 2011-04-11 21:02:47