我正在关注有关具有ejs模板的node.js和mongodb的教程。 我有这个ejs模板,它使用javascript函数输出列表。此列表包括html标签。但是它不会解释这些html标签,而只是将它们显示为文本。
这是导致问题的代码行
<h1>User List</h1>
<ul>
<%
var list = '';
for (i = 0; i < userlist.length; i++) {
list += '<li><a href="mailto:' + userlist[i].email + '"></a>' + userlist[i].username + '</a></li>';
}
%>
<%= list %>
</ul>
感谢您的支持!
答案 0 :(得分:0)
我认为这是本教程中的错误。当您添加list
变量时,就是将HTML元素放入字符串中。
当您执行<%= list %>
时,Ejs会自动转义它们。
要将字符串解释为HTML,必须将其更改为<%- list %>
。
已经说过这一点,在使用它时您需要非常小心,因为它可能会使网站向人们开放脚本到您的页面(XSS)中开放。
您最好这样做:
<ul>
<% userlist.forEach(function(user){ %>
<li>
<a href="mailto:<%= user.email %>"><%= user.username %></a>
</li>
<% }); %>
</ul>