我需要在一个带有字符串html标签html的新窗口中打印。 我做的是:
function printNewTab(toPrint, title) {
var newWin = window.open("about:blank");
newWin.document.write("<html><head><title>" + title + "</title></head></html>");
newWin.document.write(toPrint.toString());
console.log(title + ":");
console.log(toPrint);
}
但如果我有这样的字符串:
var s = "<h1>title<u> number</u> 1</h1>";
并使用上述方法:
printNewTab(s, "title");
我获得了一个新窗口,其中文本不显示标签,但格式为html。
虽然我真的很想看到打印<h1>title<u> number</u> 1</h1>
。
我怎样才能做到这一点?
谢谢!
答案 0 :(得分:2)
如果您对字符串进行html编码,以便<
之类的符号变为<
,那么它就可以正常工作。
document.write("<h1>");
将打印<h1>
。
顺便说一句,jQuery的text()函数可以帮到你。
function escapeHtml(unsafe) {
return unsafe
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
document.write(escapeHtml("<h1>title<u> number</u> 1</h1>"));
这将打印<h1>title<u> number</u> 1</h1>
。
取自this question的功能。归功于@bjornd。
答案 1 :(得分:1)
将所有html字符转换为实体,可能如下:
/
顺序无关紧要除了&符号必须首先取代,否则会造成奇怪的行为。