如何在javascript中转义html代码?

时间:2017-05-18 15:47:59

标签: javascript html html-escape-characters

所以这是我的简化代码:

TestHTML.html

<html>
<script src = "TestJs.js"></script>
<body>
<a onclick="var content = 'one<br>two<br>three' ; showContent(content);">Click here</a>
</body>
</html>        

TestJs.js

function showContent(content){

var popup = open("", "PopUp", "width=300,height=200");
var pTag = popup.document.createElement("p");
pTag.innerHTML = content;
popup.document.body.appendChild(pTag);

};        

此处我的要求是每当我点击页面上的参考链接(名为Click here)时,应打开一个弹出窗口并显示通过onclick发送的内容。上面的代码工作正常,我得到弹出结果

one
two 
three

但是当我尝试将带角度的括号放在像

这样的文本时出现问题
<a onclick="var content = '<one><br>two<br>three' ; showContent(content);">Click here</a>

我以

的形式获得了上述代码的结果
two
three

即有角度括号中的文字被转义。

我知道有角度的括号是html实体,我需要逃避它们。我试图为&lt;&gt;发送ASCII即&lt;&gt;onclick之类的

<a onclick="var content = '&lt;one&gt;<br>&lt;two&gt;<br>&lt;three&gt;' ; showContent(content);">Click here</a>

但是文本在传递给javascript函数时会转换为原始格式,然后在弹出窗口中跳过(即空白弹出窗口)。

所以我的问题是:

  1. 如何在创建html文档时转义javascript中的html标记?
  2. 当ASCII文本作为参数传递给javascript函数时,如何自动将其转换回普通文本?

2 个答案:

答案 0 :(得分:1)

看看你有什么。

  1. 字符<
  2. 需要将哪些内容(因为它已分配给innerHTML)表示为HTML,因此<必须写入&lt;
  3. 但是嵌入在HTML属性中,当HTML解析器在DOM中构造属性值时,它将被解释为HTML。 &在HTML中具有特殊含义,因此&必须表示为&amp;
  4. 所以&amp;lt;

答案 1 :(得分:-4)

用倒杆逃脱它们。 \

<a onclick="var content = '\<one\>\<br\>two\<br\>three' ; showContent(content);">Click here</a>

测试它。