3 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
任何屬性值中任何未轉(zhuǎn)義的雙引號(hào)都將破壞代碼。
let myExample = 'this is an "example" with double quotes';
'<textarea value="' + myExample + '"></textarea>'
這將產(chǎn)生以下無(wú)效的HTML混亂:
<textarea value="this is an "example" with double quotes"></textarea>
為防止出現(xiàn)這種情況,您可以轉(zhuǎn)義所有雙引號(hào):
let escaped = myExample.replace(/"/g, '\\"');
// 'this is an \"example\" that will break'
這將產(chǎn)生這個(gè)有效的HTML:
<textarea value="this is an \"example\" with double quotes"></textarea>
更好的是,您可以從創(chuàng)建帶有字符串的HTML更改為直接創(chuàng)建DOM元素:
// append <label>, <input>, <br> to form
function appendInput(form, labelTxt, inputName, inputValue) {
let label = document.createElement('label');
form.appendChild(label);
label.htmlFor = inputName;
label.innerHTML = labelTxt;
let input = document.createElement('input');
form.appendChild(input);
input.id = inputName;
input.name = inputName;
input.value = inputValue;
let br = document.createElement('br');
form.appendChild(br);
}
function generatePersonalForm(data) {
const form = document.createElement('form');
form.id = 'personalForm';
appendInput(form, 'First name:', 'firstname',
data.billing.contact.firstname);
appendInput(form, 'Last name:', 'lastname',
data.billing.contact.lastname);
// label and textarea
let label = document.createElement('label');
form.appendChild(label);
label.htmlFor = 'emailbody';
label.innerHTML = 'Data:';
let txtArea = document.createElement('textarea');
form.appendChild(txtArea);
txtArea.id = txtArea.name = 'emailbody';
txtArea.rows = '12';
txtArea.cols = '50';
txtArea.value = data.emailbody;
let br = document.createElement('br');
form.appendChild(br);
// submit input
let submit = document.createElement('input');
form.appendChild(submit);
submit.type = 'submit';
submit.value = 'Submit';
return form;
}
const dummyData = {
billing: {
contact: {
firstname: 'Joe',
lastname: '"the dude" Dokes'
}
},
emailbody: 'this is an "emailbody" with double-quotes'
}
window.onload = (() => {
const formData = generatePersonalForm(dummyData);
let result = document.getElementById('result');
result.appendChild(formData);
})();
<div id="result">
Result:<br>
</div>

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
不能在 中放置超鏈接。 僅用于處理文本。如果您想要一個(gè)帶有活動(dòng)鏈接的簡(jiǎn)單文本,那么您應(yīng)該使用div容器作為文本區(qū)域。textarea
Textarea

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
要清理 HTML,您需要將 字符 、 、 、 和 替換為其 HTML 實(shí)體,就像以下函數(shù)一樣:<>"'&
function sanitizeHTML(str){
return str.replace(/[<>"'&]/g, function(match) {
return "&#" + match.charCodeAt(0) + ";";
});
}
然后,在代碼中,將 對(duì) 的調(diào)用替換為 ,您將獲得不會(huì)破壞代碼的清理輸出。data.emailbodysanitizeHTML(data.emailbody)
添加回答
舉報(bào)