我想要一个prompt
框,询问用户姓名。但是,我将其直接放入页面中,如果我输入了HTML-y(例如<canvas>
),那么它将在页面上放置该元素。如何将其转换为文本,所以与其创建<canvas>
元素而不是将<canvas>
作为文本写入页面?
var name = prompt("Enter your name: ");
document.getElementById("paragraph").innerHTML = name;
<p id="paragraph"></p>
不幸的是,我不能使用jQuery,因此纯JS解决方案会很好。
答案 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, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
注意:此代码段来自 Can I escape html special chars in javascript?
PSA: 请不要将客户端的文本卫生用于与安全相关的任何事情。