有一些内容从服务器获取并显示在浏览器的新页面中。例如,内容是
"Apple & Orange"
但是当它在网页代码中呈现时是
function writeConsole(content,idx) {
top.consoleRef=window.open('','myconsole' + idx,
',menubar=0'
+',toolbar=1'
+',status=0'
+',scrollbars=1'
+',resizable=1');
top.consoleRef.document.writeln(
'<html><head><title> Generated Content </title></head>'
+'<body bgcolor=white onLoad="self.focus()">'
+ '<textarea rows="500" cols="500">'
+ content
+ '</textarea>'
+'</body></html>'
);
top.consoleRef.document.close();
}
它呈现为
"Apple & Orange"
为什么会这样?我需要在它上面显示String。我应该做些什么改变呢?我需要保留那些转义字符。任何帮助或建议都表示赞赏。
答案 0 :(得分:1)
document.writeln期望其输入为HTML,因此您的内容将被视为如此,这包括将&
或<
等实体引用转换为&
和{{1} }。毕竟,您希望将<
视为标记,而不是某些<title>
符号,对吗?
有多种方法可以解决您的问题。您可以做的一种可能性是使用DOM方法在单独的传递中插入文本内容。这样您就不必处理html转义问题了。
<
或者,您可以html escape将内容字符串转换为top.consoleRef.document.close();
var doc = top.consoleRef.document;
var textarea = doc.getElementsByTagName('textarea')[0];
textarea.value = "Apple & Orange";
,这样就可以在原始html文档中编写"Apple &amp; Orange"
。