❤️vue访问外部链接会拼接默认路径的问题
背景
vue单页应用项目直接使用a标签跳转到外部链接报错
问题分析
a标记触发的跳转默认被router处理,加上了前缀,见如下代码:
<--a标签-->
<a
href="'https://www.baidu.com/'"
target="_blank">
a标签跳转到外部链接测试
</a>
// 跳转后浏览器地址栏结果
http://localhost:8080/'https://www.baidu.com/'
解决方法
使用浏览器BOM操作(window.location.href)解决这个问题,实现直接跳转到外部链接,相关代码如下:
<div @click="toRescue">
window.location.href跳转到外部链接测试
</div>
......
data() {
return {
url: 'https://www.baidu.com/',
};
},
methods: {
toRescue() {
window.location.href = this.url;
},
},
// 跳转后浏览器地址栏结果
https://www.baidu.com/
另一种方式
用原生 js 解决发现路径前拼接上了默认路径,实际跳转的路径为 localhost:8080/www.baidu.com 与预期不符合。
'http://' + url
要在路径前面加上 http://
(前面拼接上一个http 这个很关键,后端返回的路径没有加协议,否则无法访问,提示私密链接之类的)
