[英]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.