You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript或jQuery替换链接中?redirect=后的内容为当前URL

如何用JavaScript替换链接中?redirect=后的内容为当前页面URL

直接给你可运行的解决方案,步骤清晰,避免正则容易踩的坑:

核心代码

// 监听DOM加载完成,确保能找到页面上的链接
document.addEventListener('DOMContentLoaded', () => {
  // 获取当前页面完整URL(含参数、哈希)
  const currentUrl = window.location.href;
  // 编码URL,避免特殊字符破坏参数结构
  const encodedUrl = encodeURIComponent(currentUrl);

  // 选中所有带?redirect=的链接(可根据需求修改选择器,比如加类名)
  const targetLinks = document.querySelectorAll('a[href*="?redirect="]');

  targetLinks.forEach(link => {
    // 用URL对象解析链接,更可靠地修改参数
    const linkUrl = new URL(link.href);
    // 替换redirect参数的值为编码后的当前URL
    linkUrl.searchParams.set('redirect', encodedUrl);
    // 更新链接的href属性
    link.href = linkUrl.toString();
  });
});

为什么这么写?

  1. 获取当前URL:window.location.href直接拿到浏览器地址栏的完整内容,不用自己拼接协议、域名这些。
  2. 编码URL:encodeURIComponent会把URL里的?、&、=等特殊字符转义,避免这些字符把redirect参数拆成多个,导致服务器解析出错。
  3. 选中目标链接:用querySelectorAll精准定位所有包含?redirect=的链接,如果你的链接有专属类名(比如class="app-redirect-link"),可以改成document.querySelectorAll('a.app-redirect-link'),效率更高。
  4. 用URL对象修改参数:比起手动写正则替换,URL对象是浏览器原生支持的工具,能自动处理参数的增删改,不会出现正则匹配不全(比如链接里有多个参数时)的问题。

示例效果

原链接:

<a href="https://app.example.com/?redirect=www.example.com">Link</a>

当前页面URL为https://www.example.com/game?q=123时,运行代码后链接会变成:

<a href="https://app.example.com/?redirect=https%3A%2F%2Fwww.example.com%2Fgame%3Fq%3D123">Link</a>

(注:编码后的URL服务器端会自动解码,不影响跳转)

额外注意

如果是React、Vue这类单页应用,页面URL切换不会刷新页面,需要在路由切换的钩子函数里重新执行这段代码,保证链接始终同步当前URL。

内容的提问来源于stack exchange,提问作者Anthony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 05:27:27