如何Uniapp中嵌入H5,并且在H5中跳转到APP的指定页面
- 场景
- Web-View
- 在官网中提供的是APP嵌入原生的H5页面
- 在APP中使用web-view嵌入H5页面使用web-view组件就可以实现,代码如下
- 调用方法跳转至app 的页面的关键方法 uni.reLaunch
- 以上代码可以解决APP嵌入原生H5页面跳转回APP的问题,但是使用uniapp开发H5就会失效,在uniapp开发H5页面使用 uni.reLaunch 只能跳转到H5项目本地的页面。
- 解决方法如下
- 1. 下载官网web-view的SDK
- 2. 在H5项目的main.js 文件里导入这个文件
- 3. 原生H5使用的跳转方法和uniapp开发的H5使用的跳转方法是不一样的
场景
有一个需求是,在app中嵌入一个H5页面,H5是一个网络页面,不在app项目里,APP可以打开H5页面,实现单点登录,并且在H5 页面中打开APP指定的页面
Web-View
在uniapp中,有一个web-view组件,这就相当于一个浏览器组件,可以用来承载网页的容器,会自动铺满整个页面
web-view的详细文档参考uniapp官网
https://uniapp
.dcloud
.net
.cn
/component
/web
-view
.html#web
-view
在官网中提供的是APP嵌入原生的H5页面
从官方demo的代码,原生H5页面使用的HTML
在APP中使用web-view嵌入H5页面使用web-view组件就可以实现,代码如下
<template
>
<view
>
<web
-view src
="https://uniapp.dcloud.io/static/web-view.html"></web
-view
>
</view
>
</template
>
src是H5的地址,可以是任何网址,与APP的地址什么的没有关系,也可以是www.baidu.com
,在这里为了方便测试,使用官方的 H5地址
官方原生h5 代码如下
<!DOCTYPE html
>
<html
>
<head
>
<meta charset
="utf-8" />
<meta name
="viewport" content
="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title
>网络网页
</title
>
<style type
="text/css">
.btn
{
display: block
;
margin: 20px auto
;
padding: 5px
;
background
-color
: #007aff
;
border: 0;
color: #ffffff
;
height: 40px
;
width: 200px
;
}
.btn
-red
{
background
-color
: #dd524d
;
}
.btn
-yellow
{
background
-color
: #f0ad4e
;
}
.desc
{
padding: 10px
;
color: #
999999;
}
.post
-message
-section
{
visibility: hidden
;
}
</style
>
</head
>
<body
>
<p
class="desc">web
-view 组件加载网络 html 示例。点击下列按钮,跳转至其它页面。
</p
>
<div
class="btn-list">
<button
class="btn" type
="button" data
-action
="navigateTo">navigateTo
</button
>
<button
class="btn" type
="button" data
-action
="redirectTo">redirectTo
</button
>
<button
class="btn" type
="button" data
-action
="navigateBack">navigateBack
</button
>
<button
class="btn" type
="button" data
-action
="reLaunch">reLaunch
</button
>
<button
class="btn" type
="button" data
-action
="switchTab">switchTab
</button
>
</div
>
<div
class="post-message-section">
<p
class="desc">网页向应用发送消息,注意:小程序端应用会在此页面后退时接收到消息。
</p
>
<div
class="btn-list">
<button
class="btn btn-red" type
="button" id
="postMessage">postMessage
</button
>
</div
>
</div
>
<script type
="text/javascript">
var userAgent
= navigator
.userAgent
;
if (userAgent
.indexOf('AlipayClient') > -1) {
// 支付宝小程序的 JS-SDK 防止 404 需要动态加载,如果不需要兼容支付宝小程序,则无需引用此 JS 文件。
document
.writeln('