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

如何拆分URL字符串中的查询参数并使用window.btoa()编码

完善查询参数编码跳转函数

这里是完善后的函数实现,核心逻辑是拆分URL的路径与查询参数部分,对参数部分进行window.btoa()编码后重新拼接,再打开新页面:

function test(path) {
  const href = window.location.origin + path;
  if (href.includes('?')) {
    // 拆分路径和查询参数部分
    const [baseUrl, params] = href.split('?');
    // 对查询参数进行Base64编码
    const encodedParams = window.btoa(params);
    // 拼接新的URL
    const newHref = `${baseUrl}?${encodedParams}`;
    // 打开编码后的URL
    window.open(newHref, '_blank', 'no-referer');
    // 注意:如果原参数包含非ASCII字符,btoa会报错,可先转成UTF-8编码的Base64,比如用encodeURIComponent处理后再btoa
    // 可选处理非ASCII参数的方式:const encodedParams = window.btoa(encodeURIComponent(params));
    return;
  }
  // 无查询参数时直接跳转
  window.open(href, '_blank', 'no-referer');
}

关键逻辑说明

  • 使用split('?')将URL拆分为基础路径(baseUrl)和查询参数串(params)两部分
  • 调用window.btoa()对完整的查询参数串进行Base64编码
  • 重新拼接成包含编码后参数的新URL,再调用window.open打开
  • 添加return避免后续执行无参数的跳转逻辑

注意事项

window.btoa()仅支持编码ASCII字符,如果你的查询参数中包含中文、emoji这类非ASCII字符,直接调用会抛出错误。这种情况下可以先通过encodeURIComponent()将参数转成ASCII格式,再进行编码:

const encodedParams = window.btoa(encodeURIComponent(params));

如果需要解码对应参数,要先用atob()解码,再用decodeURIComponent()还原原参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:59:57