与号(&)在 DOM 中不转义会生成一个 href

Ampersand (& amp;) not escaping in DOM generated a href

本文关键字:href 一个 转义 amp 与号 DOM      更新时间:2023-09-26

这是我的问题。我需要使用 DOM 创建一个 href = (..),并且 href 应该包含一些与号。

我做了什么:

 var anchor = document.createElement('a');   
     var link = "../php/page.php?id=100&mode=edit";  
     anchor.setAttribute("href", link);  
     parent.appendChild(anchor);

我遇到的问题是,当我尝试单击链接时,& 仍然存在,它没有转义到并且应该。

您正在使用JavaScript修改DOM,而不是使用HTML创建DOM。JavaScript 不是 HTML。 &在 JavaScript 字符串文字中意味着&&。就说&.

var link = "../php/page.php?id=100&mode=edit";
请注意,如果您

尝试在 XHTML 文档的脚本元素正文中使用它,则上述情况不正确(但如果您按text/html提供文档,则浏览器会将其视为 HTML 而不是 XHTML)。有关此内容的更多信息,请参阅兼容性指南。我会通过不使用 XHTML 来避免这个问题,它增加了复杂性,但几乎没有开发人员会从使用它中获得任何好处。

在 Javascript 中设置 anchorhref 属性时,&不会自动转义。

有关如何动态替换此字符串的信息,请参阅此问题。