vue跳转外部链接的方法

有些时候我们需要从我们的vue项目中跳转到第三方的链接。
坑1不能用路由跳
这时用vue的路由跳转肯定是不行的,因为vue的路由跳转只是自己项目内部的跳转,当要跳转到第三方链接时,比如跳转到百度"www.baidu.com",这已经跳出vue项目了所以不能用路由跳,应该用window.location.href或者.window.open(a,b) a:外部链接 ,b:打开方式(“_blank”新开一个窗口;“_self”覆盖当前窗口)方式跳转
坑2不能直接window.location.href跳
但是当我们用window.location.href这样直接打开时会出现一个很大的问题

“我们打开的外部链接会自动拼接我们的源地址,导致网址链接不正确,无法正常访问”
比如:window.location.href='www.baidu.com'
这时跳转过去的地址会是这样的:http://localhost:8080/#/www.baidu.com从而导致跳转失败

解决办法1

let url = 'www.baidu.com' // 这里的地址前面就不用加协议了'http:// 或者 https://' 下面一句话就是处理这个的。

let path = window.location.protocol +  "//" + url

window.location.href = path

封装方法

// 点击方法 url为传入的第三方链接或网址 如'www.baidu.com' url前面不要加协议哦!
jumpUrl(url){
  let path=window.location.protocol+'//'+url
  window.location.href=path
},

解决办法2

window.open(url, target)
  • url : 要跳转的网址 如: http://www.baidu.com
  • target: 跳转方式,‘_blank’:在新的窗口打开;‘_self’:在当前页面打开
    我是参考这位大佬的
### UniApp 开发的微信小程序实现跳转外部链接 在 UniApp 中开发微信小程序并实现在应用内部打开外部链接的功能,主要依赖于 `<web-view>` 组件。此组件允许加载网页内容,在特定场景下可作为桥梁连接至外部资源。 对于希望直接在小程序内展示外部网站的情况,可以通过创建一个专门用于承载 web 页面的新页面,并利用 `url` 参数传递目标网址。下面是一个具体的例子: ```javascript // 在触发跳转逻辑的地方调用 navigateTo 方法传入带有 URL 的路径 jump(e){ uni.navigateTo({ url: '/pages/webview/webview?url=' + encodeURIComponent(e.course_url) // 对URL编码防止特殊字符引起错误 }); } ``` 上述代码片段展示了如何定义函数 `jump()` 来处理用户的交互行为,当用户执行某个动作(比如点击按钮)时会触发这个函数,进而导航到指定的目标地址[^4]。 为了确保安全性和用户体验的一致性,开发者需要注意以下几点: - **合法性验证**:确认所访问的内容来自合法可信源; - **界面适配**:考虑到不同设备屏幕尺寸差异可能带来的显示效果变化; - **性能优化**:减少不必要的网络请求次数以加快响应速度; 另外值得注意的是,如果计划让小程序能够正常解析和呈现某些类型的 HTML 文档,则还需要按照官方指南完成相应的业务域名备案工作[^3]。 #### 使用 WebView 承载 Web 页面 假设已经有一个名为 `webview.vue` 或者类似的文件用来接收并通过 `<web-view>` 显示接收到的 URL 地址,那么其结构可能是这样的: ```html <template> <div class="container"> <!-- 使用 web-view 加载远程 html --> <web-view :src="pageUrl"></web-view> </div> </template> <script> export default { data() { return { pageUrl: '' }; }, onLoad(options) { // 接收上一页传递过来的数据 this.pageUrl = decodeURIComponent(options.url); // 解码URL恢复原始字符串形式 } }; </script> ``` 这段模板说明了怎样构建一个简单的 Vue 单文件组件来负责渲染由父级组件或其他地方发送来的 URL 链接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jieyucx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值