如何在没有全部&被一个&

How to replace href url without having all & replaced by a &

本文关键字:amp 一个 全部      更新时间:2023-09-26

我正试图用页面加载中计算的URL来替换一些空的href=""语句。

然而,替换字符串包含几个&amp,需要在href中。

无论我尝试什么,只要使用了setAttribute("href", url);$(id).attr('href', url),所有&放大器被&替换,并且链路失效。

我该如何防止这种情况发生?我敢肯定,任何以.href结尾或包含href的代码都将经历翻译阶段,并且都将失败。

您可能已经注意到,我已经编辑了很多次此消息,因为您根本无法键入完整的'&a m p;'在此框中,而不将其翻译为"&"这里也是

让我们退一步,从头开始思考这个问题。转义序列&xxx;是将"特殊字符"嵌入HTML文档的方法。需要明确的是,它是一个HTML转义序列。

这种转义字符的方式很有用,因为这意味着字符可以放在ASCII文件中,否则就无法嵌入。

例如,可以使用表示其Unicode代码点€的数字代码嵌入欧元符号()。或者,可以使用其字符实体名称 嵌入非中断空间。(除此之外:这些字符更容易嵌入UTF-8文件中,不需要转义,但这与此无关)

现在,因为这个转义序列总是以"与"开头,这意味着HTML文档中的空"与"是不明确的——当浏览器浏览文档时,它不知道你是否想要一个实际的"与",也不知道是否会出现HTML实体的转义序列。为了消除这种歧义,如果你想在HTML文档中嵌入一个符号,那么你需要转义它

让我强调一下这句话:为了消除这种歧义,如果你想在HTML文档中嵌入一个符号和,那么你需要转义它。

因为这个转义只适用于HTML文档,所以如果您在.js文件中编写Javascript,那么这个转义序列与您无关。你可以把你的安培数放在unscaped中,没有问题。这意味着,您的Javascript文件可以用空的符号替换URL,而不需要&

就浏览器而言,您编写的所有URL都只包含空的&符号。转义序列&只需要以HTML形式来表达,一旦浏览器读取了HTML,就会忘记该转义序列。

我在这里重复了几次,但那是因为我试图让它尽可能清楚。

在设置a标记的href属性之前,必须将url中的&替换为&
var url = 'www.example.com?a=1&b=2'
url = url.replace(/'&/g, '&')
$('a').attr('href', url)