小程序开发实战案例五 | 小程序如何嵌入H5页面

这篇具有很好参考价值的文章主要介绍了小程序开发实战案例五 | 小程序如何嵌入H5页面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在接入小程序过程中会遇到需要将 H5 页面集成到小程序中情况,今天我们就来聊一聊怎么把 H5 页面塞到小程序中。

 

本篇文章将会从下面这几个方面来介绍:

  • 小程序承载页面的前期准备
  • 小程序如何承载 H5
  • 小程序和 H5 页面如何通讯
  • 小程序和 H5 页面的相互跳转

 

小程序承载页面的前期准备

首先介绍下我们在用小程序承载页面之前需要做些什么。

第一步当然就是 先有一个 H5 地址 啦,支付宝这边对 H5 地址的要求如下:

  • 仅支持 https 开头的地址
  • 不支持 IP 地址及端口号
  • 不支持重定向页面

 

第二步就是要 将H5 页面地址配置到支付宝的白名单 里面,这一步必不可少的;如果不配置的话,后面在访问小程序的时候会遇到页面访问受限的报错,详见 👉[web-view页面访问受限]

 

具体步骤可以参考[配置 H5 域名],下面我简单写一下:

  • 登陆小程序详情界面 -> 找到 开发设置 -> H5 域名配置 -> 点击 添加

 

 

  • 按照上面的匹配规则提示进行操作
    • 1、下载校验文件
    • 2、把下载下来的校验文件放到 H5 地址域名的根目录下面
    • 3、在域名地址里输入 H5 地址
    • 4、点击图片中的 点击这里 进行校验
    • 5、校验通过之后就可以添加了

 

 

 

小程序如何承载 H5

前期准备完成后,我们就可以在小程序中去嵌入 H5 页面了,嵌入的步骤非常简单,需要用到的组件是 web-view ,在 web-view 组件的 src 属性中传入 H5 的页面地址,就可以在小程序里面访问 H5 页面了,代码示例如下:

<view class="page">
  <web-view
    src="https://render.alipay.com/p/s/web-view/index"
  ></web-view>
</view>

web-view 组件在使用过程中需要注意:

  • 每个小程序界面只能设置一个 web-view ,也就是只能设置一个 H5 页面
  • web-view 组件会自动铺满整个页面
  • 个人类型的小程序不支持使用这个组件

 

另外,如果有小伙伴没有完成前面配置 H5 域名步骤的话,也没有关系;在调试阶段,我们可以在小程序开发工具上选择忽略 web-view 域名合法性检查,这样就不会有报错的情况了。详细操作步骤参考👉[小程序如何忽略域名校验]

 

‼️ 划重点:每次 H5 域名配置完成之后,都需要重新上线一个版本,版本上线之后,新配置的才会生效。

 

小程序和 H5 页面如何通讯

小程序承载 H5 页面后只是第一步,我们在实现部分功能上更多会遇到的就是如何实现数据在小程序和 H5 页面之间进行传输,此时就要用到 onMessage 属性和 postMessag 方法了。

注意:小程序和 H5 数据传输是需要 H5 先发消息给小程序,小程序接收到消息后再发消息给 H5。

H5 端方法代码如下:

  • 需要注意在 H5 页面使用 my.postMessage 和 my.onMessage 方法时必须要引入 https://appx/web-view.min.js(此链接仅支持在支付宝客户端内访问)
<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <title>webview与小程序通信</title>
  </head>

  <body>
    <button onclick="send()">发送</button>
    <button onclick="isminiapp()">判断是否在小程序内</button>
    <button onclick="onmessage()">开始监听小程序发送的消息</button>
    <button onclick="getminiappid()">我要调用小程序获取APPID的API</button>
    <!-- h5 log 工具方便在小程序内查看h5的log-->
    <script src="https://cdn.jsdelivr.net/npm/eruda"></script>
    <script>
      eruda.init();
    </script>
    
    <!--引入https://appx/web-view.min.js, 如该 H5 页面需要同时在非支付宝客户端内使用,为避免该请求404,可参考以下写法 -->
    <script>
      if (navigator.userAgent.indexOf('AlipayClient') > -1) {
        document.writeln('<script src="https://appx/web-view.min.js"' + '>' + '<' + '/' + 'script>');
      }
    </script>
    <script>
      //发送消息
      function send() {
        my.postMessage({
          name: "h5发送测试web-view"
        });
      }
      //监听小程序发给H5页面的消息
      function onmessage() {
        my.onMessage = function (e) {
          console.log(e);
        }
      }
      //判断是否在小程序内
      function isminiapp() {
        my.getEnv(function (res) {
          console.log(res.miniprogram) // true  
        });
      }
      //H5内通过通信获取APPID(先给小程序发送消息,表示H5内需要APPID)
      function getminiappid() {
        my.postMessage({
          name: "getappid"
        });
      }
    </script>
  </body>

</html>

 

小程序端接收方法:

<!-- .axml -->
<view>
  <web-view id="web-view-1" src="..." onMessage="test"></web-view>
</view>

 

// 小程序页面对应的 page.js 声明 test 方法,
// 由于 page.axml 里的 web-view 组件设置了 onMessage="test",
// 当页面里执行完 my.postMessage 后,test 方法会被执行
Page({
  onLoad(e){
    this.webViewContext = my.createWebViewContext('web-view-1');    
  },
  test(e){
    my.alert({
      content:JSON.stringify(e.detail),
    });  
    this.webViewContext.postMessage({'sendToWebView': '1'});
  },
});

 

 

小程序和 H5 页面的相互跳转

了解完通讯之后,我们再来看看另外一个功能,即小程序和 H5 页面怎么相互跳转。

小程序和 H5 页面跳转分为两种情况,分别是:

  • 从 A 小程序的 a 页面( H5 承载页面)跳转到 A 小程序的 b 页面
  • 从 A 小程序的 a 页面( H5 承载页面)跳转到 B 小程序的 b 页面

 

同一个小程序页面跳转

这种情况跳转比较简单,只要在 H5 页面里面引入 https://appx/web-view.min.js 后,直接使用my.navigateTo 或者是 my.redirectTo 进行跳转就可以了。

代码如下:

<script type="text/javascript" src="https://appx/web-view.min.js"></script>
<!-- 如该 H5 页面需要同时在非支付宝客户端内使用,为避免该请求404,可参考以下写法 -->
<!-- 请尽量在 html 头部执行以下脚本 -->
<script>
  if (navigator.userAgent.indexOf('AliApp') > -1) {
    document.writeln('<script src="https://appx/web-view.min.js"' + '>' + '<' + '/' + 'script>');
  }
</script>
<script>
  my.navigateTo({url: '../get-user-info/get-user-info'});
</script>

 

不同小程序页面跳转

不同小程序页面的跳转逻辑是这样的:H5 页面告诉 A 小程序说我要跳转 B 小程序啦,A 小程序接到指令后执行跳转到 B 小程序的命令。

代码如下:

H5 页面代码

<script type="text/javascript" src="https://appx/web-view.min.js"></script>
<!-- 如该 H5 页面需要同时在非支付宝客户端内使用,为避免该请求404,可参考以下写法 -->
<!-- 请尽量在 html 头部执行以下脚本 -->
<script>
  if (navigator.userAgent.indexOf('AliApp') > -1) {
    document.writeln('<script src="https://appx/web-view.min.js"' + '>' + '<' + '/' + 'script>');
  }
</script>
<script>
  // 网页向小程序 postMessage 消息
  my.postMessage({name:"跳转B小程序"});
  // 接收来自小程序的消息。
  my.onMessage = function(e) {
    console.log(e); // {'sendToWebView': '1'}
  }
  // 判断是否运行在小程序环境里
  my.getEnv(function(res) {
    console.log(res.miniprogram) // true
  });
  my.startShare();
</script>

 

 

小程序代码:

<!-- .axml -->
<view class="page">
  <web-view
      id="web-view-1"
    src="https://render.alipay.com/p/s/web-view/index"
    onMessage="test"
  ></web-view>
</view>

 

// 小程序页面对应的 page.js 声明 test 方法,
// 由于 page.axml 里的 web-view 组件设置了 onMessage="test",
// 当页面里执行完 my.postMessage 后,test 方法会被执行
Page({
  onLoad(e) {
    this.webViewContext = my.createWebViewContext('web-view-1');
  },
  test(e) {
    my.navigateToMiniProgram({
      appId: 'B小程序的appid', 
      path: 'pages/index/index?p=1&q=2',
      query: {
        a: 'foo',
        b: 'bar',
      },
      success: function (res) {
        console.log(res);
      },
      fail: function (err) {
        console.log(err);
      }
    });
    this.webViewContext.postMessage({ sendToWebView: '1' });
  },
});

 

 

其他问题分享

这边给写一下对接 web-view 过程中可能会遇到的一些问题:

  • [web-view如何调用H5支付]
  • [web-view的title怎么设置]
  • [web-view页面可以使用自定义组件吗]
  • [web-view承载的H5缓存与小程序缓存如何操作]
  • [web-view组件支持刷新当前页面吗]
  • [已设置web-view的H5域名,但是访问H5仍出现页面访问受限]

希望对大家接入有所帮助~

 

以上就是关于「小程序如何嵌入 H5 页面」的所有内容了,是不是这么一看还挺简单的,一起来试试吧,有问题欢迎在评论区沟通交流。文章来源地址https://www.toymoban.com/news/detail-804600.html

到了这里,关于小程序开发实战案例五 | 小程序如何嵌入H5页面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序开发实战9_2 小程序页面转发

    小程序页面转发是小程序分享的一个重要方式,在设计小程序应用时就需要考虑那些页面需要实现转发功能,以及页面的转发参数。本节介绍如何进行小程序页面的分享,并介绍如何获取小程序卡片的分享票据。 9.2.1小程序页面转发 微信小程序提供了页面的转发的功能,用户

    2024年02月16日
    浏览(36)
  • 微信小程序web-view嵌入uni-app H5页面,通过H5页面跳转企业微信客户聊天窗口如何操作?

    1)找到企业ID,登录 企业微信 企业微信 https://work.weixin.qq.com/wework_admin/loginpage_wx  2)找到接入链接  功能-客服-微信客服 微信公众平台,给个人、企业和组织提供业务服务与用户管理能力的全新服务平台。 https://mp.weixin.qq.com/

    2024年02月11日
    浏览(48)
  • 微信小程序开发系列(三)·微信小程序页面的创建、小程序如何更改调试基础库

    零基础手把手教你创建微信小程序(一)·微信小程序开发账号的注册以及开发者工具的安装和使用-CSDN博客 零基础手把手教你创建微信小程序(二)·创建第一个微信小程序以及了解小程序代码的构成-CSDN博客 目录 1.  小程序页面的创建 1.1  方法一 1.2  方法二 2.  小程序如

    2024年04月26日
    浏览(51)
  • 小程序webview嵌入的H5页面,点击按钮,返回小程序的指定页面

    今天弄了一个活动,首先从小程序进入webview里的H5页面,然后H5页面里有个按钮,点击后需要跳转到小程序的注册页。那么,H5那边该怎么实现呢? 因为已经进入小程序环境了,所以实现起来相对单纯的H5跳小程序比较简单 npm install --save weixin-js-sdk

    2024年02月16日
    浏览(48)
  • uniapp开发小程序H5页面顶部导航栏navigationBar如何隐藏?三种解决办法

    方法1:在pages.json 原生小程序也可以采用类似的方法去掉顶部,让头部变透明 小程序页面顶部导航栏navigationBar如何隐藏、变透明?_你挚爱的强哥的博客-CSDN博客 小程序顶部的白色背景条就不见了,直接变透明,只剩下右上角的胶囊按钮。 https://s-z-q.blog.csdn.net/article/details/13

    2024年02月13日
    浏览(42)
  • 如何Uniapp中嵌入H5,并且在H5中跳转到APP的指定页面

    有一个需求是,在app中嵌入一个H5页面,H5是一个网络页面,不在app项目里,APP可以打开H5页面,实现单点登录,并且在H5 页面中打开APP指定的页面 在uniapp中,有一个web-view组件,这就相当于一个浏览器组件,可以用来承载网页的容器,会自动铺满整个页面 web-view的详细文档参

    2024年02月04日
    浏览(44)
  • uni-app | 小程序嵌入H5页面实现支付功能

    前一阵在做公司小程序时,有个需要对接支付的功能。但是本着订单数据和支付统一入口的设计原则,计划是对接公司商城现有的支付体系。故本方案是分析对接商城支付几种可行方案以及每种方案的可行性,最后综合选出一种最佳的方案。 实现方式 跳转商城小程序支付 跳

    2024年02月07日
    浏览(55)
  • 微信小程序webview嵌入H5页面,返回 UniAppJSBridgeReady,不触发问题

    公司的一个项目,要求用微信小程序实现对pdf文件,预览签字,用的uniapp开发 pdf预览这部分,用的pdf.js插件实现。 由于微信小程序中webview展示页面不能放在项目本地,要求远端请求网页。而且webview会铺满整个页面,导致我的签字按钮只能放在远端的H5页面实现,当时因为偷

    2024年02月15日
    浏览(42)
  • 微信小程序web-view嵌入uni-app H5页面,通过H5页面传参给小程序进行转发分享页面,并通过点击转发出来的卡片,定向打开对应H5路径

    index.wxml  index.js 在H5项目的App.vue页面获取参数实现自动跳转到对应页面,包括携带的参数值

    2024年02月12日
    浏览(49)
  • 微信小程序开发教学系列(12)- 实战项目案例

    本章将通过一个简单的实战项目案例来帮助读者巩固之前学习到的知识。我们将搭建一个名为“ToDoList”的微信小程序,实现一个简单的任务清单功能。 ToDoList是一个用于记录和管理任务的小程序。用户可以添加、编辑、完成和删除任务,以及查看任务清单。 功能需求 显示任

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包