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

VueJS中如何避免:href绑定的链接与当前URL自动拼接的问题

问题原因说明

你遇到的域名拼接行为不是Vue导致的,是浏览器的默认规则:没有带协议头(http/https)的URL会被识别为相对路径,浏览器会自动将其和当前页面的域名拼接后跳转。

更优解决方案

下面几种方案都优于硬编码https://前缀,可根据你的项目场景选择:

  • 方案1:新增计算属性做协议判断,避免重复添加前缀
    适配存储的URL可能已带协议、或部分是http协议的场景,不会出现https://https://xxx.com的错误拼接,代码示例如下:
    <template>
      <div :key="link.id">
        <a 
          :href="fullUrl"
          target="_blank"
        >
          {{link.title}}
        </a>
      </div>
    </template>
    
    <script>
    export default {
      name: "Link",
      props: ["link"],
      computed: {
        fullUrl() {
          // 先判断当前URL是否已经带协议
          if (/^https?:\/\//.test(this.link.url)) {
            return this.link.url
          }
          // 没有协议统一补全https前缀
          return `https://${this.link.url}`
        }
      }
    };
    </script>
    
  • 方案2:封装为全局公共能力
    如果多个组件都需要处理链接跳转逻辑,可将上述判断逻辑封装为全局挂载的工具方法,或者Vue自定义指令,所有组件直接调用即可,不用重复编写逻辑。
  • 方案3:数据源层面统一处理
    在后端新增/录入URL时,统一校验格式补全协议头后再存入数据库,前端直接绑定link.url即可,不需要额外做前端兼容处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:36:01