只需四步!实现uni-app微信小程序跳转外部链接!

0 阅读1分钟

很多做小程序开发的朋友都遇到过一个问题:想让小程序里的按钮跳转到外部链接(比如公司官网、博客文章、活动页面),结果用平时跳内部页面的方法试了半天,根本没反应!别慌,今天就给大家分享一套“uni-app开发微信小程序跳转外部链接”的完整方案,从配置到落地,每一步都讲清楚,新手也能跟着做~

一、为什么跳外部链接需要特殊处理?

在开发微信小程序时,跳转到小程序内部页面(比如从首页跳详情页),我们常用uni.navigateTo、uni.redirectTo、uni.reLaunch这些官方提供的方法——只要页面在pages.json里注册过,就能轻松跳转。

但如果要跳转到小程序之外的外部链接(比如CSDN文章、百度搜索页),上面这些方法就完全不管用了。这时候,我们需要借助 uni-app 里的【web-view组件】——它相当于在小程序里嵌入一个“迷你浏览器”,专门用来加载外部的网页链接。

二、4步实现外部链接跳转

接下来咱们一步步来,从页面配置到代码编写,每一步都附详细说明,大家可以直接复制参考(注意别写错路径)。

第一步:先在pages.json里注册2个关键页面

要实现跳转,需要先准备两个页面:

index页:放一个“触发跳转的按钮”(比如“跳转到博客”按钮);

webView页:专门用web-view组件加载外部链接(相当于“中转站”)。

打开项目里的pages.json文件,在pages数组中添加这两个页面的配置。

{
  "pages": [
    // 第一个页面: index页(启动页/功能页,放跳转按钮)
    {
      "path": "pages/index/index",
      "style": {
        "navigationBarTitleText": "我的小程序"
      }
    },
    // 第二个页面: webView页(承载外部链接)
    {
      "path": "pages/webView/webView",
      "style": {
        "navigationBarTitleText": "",
        "enablePullDownRefresh": false
      }
    }
  ],
  "globalStyle": {  // 修正字段大小写
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "uni-app",
    "navigationBarBackgroundColor": "#F8F8F8",
    "backgroundColor": "#F8F8F8"
  },
  "uniIdRouter": {}
}

第二步:在index页加个“跳转按钮”,并传外部链接

在index页面(也就是用户能看到的页面)里,添加一个按钮,点击按钮时,把要跳转的外部链接作为“参数”,传给webView页。

打开pages/index/index.vue,写如下代码:

<template>
	<view class="content">
		<button @click="gotoExternalLink">跳转到CSDN文章</button>
	</view>
</template>
 
<script>
	export default {
		methods: {
			gotoExternalLink(){
				//1. 定义要跳转的外部链接(替换成你的目标链接)
				let targetUrl = 'https://blog.csdn.net/weixin_71403100/article/details/135416379?spm=1001.2014.3001.5501'
				//2. 跳转到webView页,并把外部链接传过去
        uni.navigateTo({
					url:'/pages/webView/webView?url=' + targetUrl
				})
			}
		}
	}
</script>

这里要注意:

url: '/pages/webView/webView?url=' + targetUrl这行代码里,?url=是“传参数”的格式,后面跟的是你要跳转的外部链接,别漏了符号~

第三步:在webView页接收链接,用web-view加载

webView页的作用是“接住”从index页传过来的外部链接,再用web-view组件把链接打开。

打开pages/webView/webView.vue,写如下代码:

<template>
	<view>
		<web-view :src="currentUrl"></web-view>
	</view>
</template>
 
<script>
	export default {
		data() {
			return {
				currentUrl:'' //用来存从 index页传过来的外部链接
			};
		},
		onLoad(options) {
            //接收传递的访问地址
			this.currentUrl = options.url || "
		}
	}
</script>

这里的onLoad(options)是 uni-app 的“页面加载生命周期”,只要页面一打开,就会自动执行,帮我们拿到index页传过来的外部链接,然后把链接绑定到web-view的src属性上,就能加载外部页面了。

第四步:看效果!本地调试先试手

写好代码后,打开微信开发者工具,运行小程序:

1. 进入index页,点击“跳转到 CSDN 文章”按钮;

2. 会自动跳转到webView页,然后加载出目标外部链接(比如CSDN文章页);

3. 此时在外部页面里的操作(比如滑动、点击),都能正常进行。

三、注意避坑!域名配置的那些事儿

很多小伙伴会遇到一个问题:本地调试能跳转,一用手机预览就提示“无法打开该页面”——这其实是“业务域名”没配置的问题,咱们分情况说清楚:

情况 1:开发/测试阶段,本地调试不用配域名

在微信开发者工具里调试时,我们可以暂时“关闭域名校验”,这样不用配置也能跳外部链接。操作步骤:

1. 打开微信开发者工具,找到顶部菜单栏的【详情】;

2. 点击【本地设置】,勾选“不校验合法域名、web-view(业务域名)、TLS版本以及HTTPS证书”;

3. 重新运行小程序,本地跳转就能正常用了。

情况 2:预览/正式发布,必须配置“业务域名”

如果要在手机上预览,或者把小程序发布到线上,就必须在微信公众平台配置“业务域名”——只有配置过的域名,才能通过web-view加载。

配置步骤:

1. 登录【微信公众平台】,进入你的小程序后台;

2. 在左侧菜单找到【开发】→【开发管理】→【开发设置】;

3. 找到“业务域名”选项,点击【修改】,把你要跳转的外部链接的域名(比如blog.csdn.net)添加进去;

4. 按提示完成验证(需要下载验证文件,放到域名对应的服务器根目录,并确保可通过https://你的域名/验证文件名.txt访问),验证通过后,域名就配置好了。

重要提醒:

1. 个人主体的小程序,在后台是没有“业务域名”配置入口的!也就是说,个人小程序无法实现正式版跳转外部链接,如果是企业需求,建议用企业主体注册小程序。

2. 配置的业务域名必须经过ICP备案,且必须支持HTTPS。

3. 配置好业务域名后,index页里的targetUrl必须是“该域名下的链接”(比如你配置了blog.csdn.net,就可以跳转该站下的任何HTTPS链接),否则还是会提示无法打开。

配置后的效果:

把index页里的targetUrl改成“已配置的业务域名下的链接”,再用手机预览:

1. 点击跳转按钮,会顺利跳转到webView页;

2. 加载出目标外部页面(比如公司官网的登录页、活动页);

3. 手机上操作外部页面,完全正常,不会再提示“无法打开”。

其实uni-app实现微信小程序跳转外部链接,核心就是“用web-view组件当中转站”,再注意域名配置的问题,就能轻松搞定。步骤再梳理一遍:

1. 在pages.json注册index和webView页;

2. index页加按钮,传外部链接到webView页;

3. webView页接收链接,用web-view加载;

4. 开发测本地关校验,预览/发布前配业务域名。