javascript - 如何在不将所有 & 替换为 & 的情况下替换 href url

标签 javascript jquery html href replace

我正在尝试用页面加载时计算出的 URL 替换一些空的 href="" 语句。

但是,替换字符串包含多个 &,它们需要位于 href 中。

无论我尝试什么,只要使用 setAttribute("href", url);$(id).attr('href', url) ,所有 & 都被替换为 & 并且链接失败。

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

您可能已经注意到,我已经多次编辑此消息,因为您根本无法输入完整的“&”在此框中,也无需将其翻译为“&”。

最佳答案

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

这种转义字符的方法非常有用,因为它意味着可以将字符放入 ASCII 文件中,否则将无法嵌入。

例如,可以使用表示其 Unicode 代码点 的数字代码嵌入欧元符号 ()。或者,可以使用其字符实体名称   嵌入不间断空格。 (旁白:这些字符更容易嵌入到 UTF-8 文件中,无需转义,但这不是这里的重点)

现在,因为这个转义序列总是以 & 符号开头,这意味着 HTML 文档中的裸 & 符号是不明确的 - 当浏览器读取文档时,它不知道您是否想要一个真正的 & 符号,或者是否有一个HTML 实体转义序列即将出现。为了消除这种歧义,如果您想在 HTML 文档中嵌入 & 符号,那么您需要对其进行转义。

让我强调一下这句话:要消除这种歧义,如果您想在 HTML 文档中嵌入 & 符号,那么您需要对其进行转义。

因为这种转义仅适用于 HTML 文档,如果您在 .js 文件中编写 Javascript,则此转义序列与您无关。您只需将&符号放入未转义的符号即可,没有问题。这意味着,您的 Javascript 文件可以用裸露的 & 符号替换 URL,无需 &

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

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

关于javascript - 如何在不将所有 & 替换为 & 的情况下替换 href url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14866132/

相关文章:

javascript - 模拟Chrome和IE中的加载效果

javascript - 如何使 Google map 信息窗口的内容完全适合所有浏览器?

JavaScript/CSS - 更新多个输入元素的值*和*大小

jquery移动按钮颜色改变

javascript - 忽略按钮上的验证

javascript - 可以滚动内容但不出现滚动条

javascript - 如何制作jquery多图预览

jQuery 不能在 Rails 4 中使用 simple_form

css - 当我向嵌套 DIV 添加边距时,它会导致父 DIV 接收边距,除非我为父 DIV 提供边框。为什么?

jquery - 尝试使用 onclick 向下滚动屏幕,我做错了什么?