javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > 微信小程序跳转外部链接

微信小程序如何优雅地跳转外部链接详解(WebView+复制方案实战)

作者:Stroller_1

在微信小程序开发过程中,实现跳转外链接功能可拓展小程序应用场景,下面这篇文章主要介绍了微信小程序如何优雅地跳转外部链接的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

在做小程序开发的过程中,我们经常会遇到这样一个需求: 👉 用户在小程序里点开一个课程/资料,需要跳转到公司内部的学习系统或者外部网站。

问题来了:

这篇文章我会结合实际项目,聊聊 两种常见方案

  1. 业务域名 + WebView 打开外部链接

  2. 不在业务域名里的 → 自动复制链接

背景:小程序的安全限制

微信对小程序的外部链接有严格限制:

所以,解决问题的第一步就是搞清楚: 👉 目标链接的域名是否可控、能否添加到业务域名里。

方案一:业务域名 + WebView

如果域名可控,那就很简单:

(1)后台配置业务域名

微信公众平台开发 → 开发管理 → 开发设置 里,把外部系统的域名加到「业务域名」里。

(2)封装一个 Webview 页面

新建一个 pages/webview/index.tsx 页面:

import { WebView } from '@tarojs/components'
import { useRouter } from '@tarojs/taro'
​
export default function WebviewPage() {
  const router = useRouter()
  const { url } = router.params   // 从路由参数里取出外部链接
​
  return (
    <WebView src={decodeURIComponent(url || '')} />
  )
}

(3)点击跳转时传递外部链接

在业务页面中,比如课程列表:

Taro.navigateTo({
  url: `/pages/webview/index?url=${encodeURIComponent(course.link)}`
})

这样就能在小程序里「无缝」打开外部网页,用户体验和原生浏览器几乎一样。

方案二:域名不可控 → 自动复制链接

有些情况,外部系统的域名是公司内网的,根本没法加到微信后台的「业务域名」里。 这时 WebView 打不开,只能换个思路:

👉 点击课程 → 直接复制链接 → 提示用户去内网环境手动打开。

实现也很简单,用 Taro 的 setClipboardData

<View
  className="course-name"
  style={{ color: "#1e90ff" }}
  onClick={() => {
    Taro.setClipboardData({
      data: course.link,
      success: () => {
        Taro.showToast({
          title: '链接已复制',
          icon: 'success',
          duration: 2000
        })
      }
    })
  }}
>
  {course.className}
</View>

这样用户点击课程名时,会复制到剪贴板,配合一个 Toast 提示,交互也很自然。

进阶:自动判断策略

在项目里,我们甚至可以做一个「自动判断」:

简单写法:

const whiteList = ['example.com', 'study.company.com']
​
const openLink = (link: string) => {
  const domain = new URL(link).hostname
​
  if (whiteList.includes(domain)) {
    Taro.navigateTo({
      url: `/pages/webview/index?url=${encodeURIComponent(link)}`
    })
  } else {
    Taro.setClipboardData({
      data: link,
      success: () => {
        Taro.showToast({ title: '链接已复制', icon: 'success' })
      }
    })
  }
}

这样在不同环境下都能兜底,用户体验更统一。

踩坑记录

  1. WebView 无法打开? 👉 90% 是域名没加到「业务域名」,或者 Https 证书有问题。

  2. 链接里有特殊字符? 👉 记得用 encodeURIComponent / decodeURIComponent 做参数传递。

  3. 公司内网地址打不开? 👉 必须用复制方案,WebView 没法解决。

总结

这样既符合微信的限制,又能保证用户体验。

👨‍💻 以上就是我在实际项目中踩坑总结的「小程序跳转外部链接」两种思路,希望能帮到你! 如果你也在做类似需求,欢迎留言交流~

到此这篇关于微信小程序如何优雅地跳转外部链接的文章就介绍到这了,更多相关微信小程序跳转外部链接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文