青春有我
2023-05-19 19:52:18
我需要在 div 中顯示用戶輸入。但是,如果用戶輸入標(biāo)簽,它將執(zhí)行腳本標(biāo)簽內(nèi)的任何內(nèi)容。例如<html><body> <button onclick="runTest('<script>alert(\'test\')</script>')">Click Me</button> <div id="test"></div></body></html>還有我的 javascript runTest 函數(shù)function runTest(str) { $('#test').append($('<div>' + str + '</div>'));}如果我運(yùn)行它,它將導(dǎo)致執(zhí)行 alert()。我嘗試使用 escape(str),但它顯示轉(zhuǎn)義字符%3Cscript%3Ealert%28%27test%27%29%3C/script%3E任何想法?這是提琴手:https://jsfiddle.net/zvLg1w6q/1/
1 回答

人到中年有點(diǎn)甜
TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
你可以使用這個(gè)功能:
function htmlencode(str) {
return str.replace(/[&<>"']/g, function($0) {
return "&" + {"&":"amp", "<":"lt", ">":"gt", '"':"quot", "'":"#39"}[$0] + ";";
});
}
并按以下方式使用它:
function htmlencode(str) {
return str.replace(/[&<>"']/g, function($0) {
return "&" + {"&":"amp", "<":"lt", ">":"gt", '"':"quot", "'":"#39"}[$0] + ";";
});
}
document.getElementById("myDiv").innerHTML = htmlencode('<scrip t>alert("hi")</scrip t>')
<div id="myDiv">
</div>
添加回答
舉報(bào)
0/150
提交
取消