我有一个创建 HTML/CSS MessageBox 的函数,我想在其中显示一个变量(已经使用 PHP json_encode() 进行了转义,不可能进行 XSS 注入)。我想在硬编码消息中显示此变量,它始终是相同的消息。该消息在 HTML 粗体标记之间显示此变量<b></b>
:
Message("Do you really want to delete <b>" + reference + "</b> ?");
传递给 Message() 函数的字符串将添加到 div 标记中,如果我希望变量引用以粗体样式显示,我唯一的解决方案是使用 innerHTML。
很多人说“不要使用innerHTML,它没有标准化”,“这是微软专有功能,不是W3C,可能不再受支持”。
我一直使用 DOM 方法,但就我而言,DOM1 myDiv.firstChild.nodeValue 属性甚至 DOM3 myDiv.textContent 方法都不起作用,因为字符串仅显示为文本。
innerHTML 方法的优点是不<>
使用 HTML 实体转义字符,不幸的是我认为使用 DOM 方法不可能获得相同的结果。
我不能使用 document.createElement("b") 方法,这会使一切变得复杂,因为我希望我的 Message() 函数将完整样式的字符串作为一个参数。
所以我的想法是在某些情况下需要使用 innerHTML 而不是使事情复杂化,这取决于你如何使用它并不是一个坏习惯。
评论表示赞赏。