当文本显示在浏览器页面上时,字符会被取消转义

时间:2014-08-04 16:53:40

标签: javascript html escaping

有一些内容从服务器获取并显示在浏览器的新页面中。例如,内容是

"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。我应该做些什么改变呢?我需要保留那些转义字符。任何帮助或建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

document.writeln期望其输入为HTML,因此您的内容将被视为如此,这包括将&amp;&lt;等实体引用转换为&和{{1} }。毕竟,您希望将<视为标记,而不是某些<title>符号,对吗?

有多种方法可以解决您的问题。您可以做的一种可能性是使用DOM方法在单独的传递中插入文本内容。这样您就不必处理html转义问题了。

<

或者,您可以html escape将内容字符串转换为top.consoleRef.document.close(); var doc = top.consoleRef.document; var textarea = doc.getElementsByTagName('textarea')[0]; textarea.value = "Apple &amp; Orange"; ,这样就可以在原始html文档中编写"Apple &amp;amp; Orange"

相关问题