【发布时间】:2017-05-18 15:47:58
【问题描述】:
所以这是我的简化代码:
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 实体,我需要转义它们。我尝试为 发送 ASCII,即 &lt; 和 &gt; 到 onclick 就像
<a onclick="var content = '<one><br><two><br><three>' ; showContent(content);">Click here</a>
但文本在传递给 javascript 函数时会转换为其原始形式,随后会在弹出窗口中跳过(即空白弹出窗口)。
所以我的问题是:
- 创建html文档时如何在javascript中转义html标签?
- ASCII 文本作为参数传递给 javascript 函数时如何自动转换回普通文本?
【问题讨论】:
-
你能创建一个 jsfiddle 来说明你的问题吗? jsfiddle.net
-
快速修复:使用
pTag.innerText而不是pTag.innerHTML。 -
@GolezTrol — 否。这将防止
<br>元素被解释为 HTML。 -
@RobinManoli — Stackoverflow 已支持 embedded live demos for years。如果您想要现场演示,建议第三方网站托管它并不是一个好主意。
-
内联事件处理程序是一个糟糕的选择......
标签: javascript html html-escape-characters