显示脚本数据来自数据库而不在 javascript 中执行它?



我正在从数据库中获取myList并将其附加到我的表中。

$.each(myList, function (index, data) {
var row = '<tr>';        
row = row            
'<td class="action"><a href='#' title='Edit Note' onclick="showPopup(' + ''' + note.RID + ''); return false;" ><img width='25' height='20' src='../images/text-editor.png' /></a></td>'
+ '</tr>';        
$('#tblNotes').append(row);
});

如果 row 的值来自数据库是一个脚本,那么如何在不执行脚本的情况下在我的表上显示它?

一种解决方案是,我们可以删除脚本标签。 像这样:

row = row.replace("<script>", "");
row = row.replace("</script>", "");

但我不想要它。我必须显示确切的值。

我得到了答案。 通过使用 html 实体,我解决了这个问题。

row = row.replace("<script>", "&lt;script&gt;");
row = row.replace("</script>", "&lt;/script&gt;");

通过添加这些行,我可以停止执行脚本。

两者都可以工作

var row = `Here is some embedded script <script>alert('bla')</script>`
document.getElementById("x").innerText = row
row = row.replace(/</g, "&lt;");
document.getElementById("y").innerHTML = row
<span id="x"></span>
<hr/>
<span id="y"></span>

最新更新