如何在提示中将HTML格式的用户输入转换为文本

时间:2018-09-26 02:06:33

标签: javascript html prompt

我想要一个prompt框,询问用户姓名。但是,我将其直接放入页面中,如果我输入了HTML-y(例如<canvas>),那么它将在页面上放置该元素。如何将其转换为文本,所以与其创建<canvas>元素而不是将<canvas>作为文本写入页面?

var name = prompt("Enter your name: ");
document.getElementById("paragraph").innerHTML = name;
<p id="paragraph"></p>

不幸的是,我不能使用jQuery,因此纯JS解决方案会很好。

2 个答案:

答案 0 :(得分:1)

您可以使用innerText而不是innerHTML

 document.getElementById("paragraph").innerText = name;

答案 1 :(得分:0)

您要在再次显示输入文本之前先对其进行转义。

您的JavaScript现在看起来像:

var name = escapeHtml(prompt("Enter your name: "));
document.getElementById("paragraph").innerHTML = name;

function escapeHtml(unsafe) {
    return unsafe
         .replace(/&/g, "&amp;")
         .replace(/</g, "&lt;")
         .replace(/>/g, "&gt;")
         .replace(/"/g, "&quot;")
         .replace(/'/g, "&#039;");
}    

注意:此代码段来自 Can I escape html special chars in javascript?

PSA: 请不要将客户端的文本卫生用于与安全相关的任何事情。