在javascript中打印html标签

时间:2011-04-11 20:57:47

标签: javascript html printing tags

感谢阅读!

var data = "<html><head><title>Hello</title></head><body>Hello Body</body></html>";

我想打印包含HTML标签的data,而不需要浏览器呈现HTML标签,只显示“Hello Body”。

我试过了:

str = str.replace("<", "");

但徒劳无功。

3 个答案:

答案 0 :(得分:11)

 data = data.replace(/</g, "&lt;").replace(/>/g, "&gt;");

当浏览器遇到&lt;(称为字符实体)时,它会用文字“&lt;”替换它,使您能够在页面上显示HTML标记而不进行渲染。

/</g是一个正则表达式,只是说“匹配所有”&lt;'在字符串“中,g表示全局执行。没有g,它只会替换第一个'&lt;'它遇到了。

最后需要注意的是,使用jQuery等库可以做得更好。这是一种很容易出错的东西,并且错过了边缘情况。让经过强化,经过良好测试和安全的库函数为您完成。

答案 1 :(得分:9)

实际(更安全的修复)如下:

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;
}

答案 2 :(得分:3)

这很丑,但你可以试试这个(借用Prototype的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);

当然,创建一个小帮助函数会更好。