繁体   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