簡體   English   中英

在javascript中打印html標簽

[英]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, "&lt;").replace(/>/g, "&gt;");

當瀏覽器遇到&lt; (稱為字符實體),它將用文字'<'替換它,使您能夠在頁面上顯示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,'&amp;')
    .replace(/</g,'&lt;')
    .replace(/>/g,'&gt;');

document.write(data);

當然,創建一些輔助功能會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM