[英]print html tags in javascript
謝謝閱讀!
var data = "<html><head><title>Hello</title></head><body>Hello Body</body></html>";
我想打印包括HTML標記的data
,而不必讓瀏覽器呈現HTML標記並僅顯示“ Hello Body”。
我試過了:
str = str.replace("<", "");
但徒勞無功。
data = data.replace(/</g, "<").replace(/>/g, ">");
當瀏覽器遇到<
(稱為字符實體),它將用文字'<'替換它,使您能夠在頁面上顯示HTML標簽,而無需渲染它們。
/</g
是一個正則表達式,只說“匹配字符串中的所有'<'”,而g
表示全局進行匹配。 如果沒有g
,它將僅替換它遇到的第一個'<'。
最后一點,最好使用jQuery之類的庫來執行此操作。 這種東西很容易出錯,容易遺漏邊緣情況。 讓經過強化,測試和安全的庫功能為您完成。
實際(和更安全的解決方法)如下:
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;
}
這很丑陋,但是您可以嘗試一下(從Prototype的escapeHTML()
實現中escapeHTML()
):
var data = "<html> <head> <title> Hello </title> </head> <body> Hello Body </body> </html>"
.replace(/&/g,'&')
.replace(/</g,'<')
.replace(/>/g,'>');
document.write(data);
當然,創建一些輔助功能會更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.