微信小程序与webview H5交互的方法(内嵌H5跳转原生页面)

 更新时间:2022年11月22日 14:12:01   作者:mr_cmx  
小程序webView中嵌套H5页面,难免会遇到小程序与h5页面进行数据通信或交互的场景,下面这篇文章主要给大家介绍了关于微信小程序与webview H5交互的相关资料,内嵌H5跳转原生页面,需要的朋友可以参考下

前言

在开发中,使用web-view组件内嵌H5页面是非常常见的,但很多人不知道webview内嵌H5如何与原生小程序 交互。下面介绍下实现微信小程序与webview H5交互的方法。

web-view功能描述

承载网页的容器。会自动铺满整个小程序页面,个人类型的小程序暂不支持使用。

客户端 6.7.2 版本开始,navigationStyle: custom 对 web-view 组件无效

web-view 内嵌 H5 给原生小程序传参

方式一、使用postMessage

在web-view组件上有一个属性“bindmessage”,官方是这么介绍的:

网页向小程序 postMessage 时,会在特定时机(小程序后退、组件销毁、分享)触发并收到消息。e.detail = { data },data是多次 postMessage 的参数组成的数组

在 web-view 组件上绑定 “message”事件

在 H5 中 触发 message 事件即可在小程序中接收 H5传递的数据

例子:

小程序 /pages/test/test.wxml :

<web-view src="" bindmessage="receiveMessage"></web-view>

小程序 /pages/test/test.js :

receiveMessage(e){
	console.log(e.detail)//接收H5传过来的数据
}

H5:

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script>
wx.miniProgram.postMessage({ data: {foo: 'bar'} })
</script>

利用postMessage可以实现小程序与H5之间通讯,但只在小程序后退、组件销毁、分享时触发,所以在一些情况可能不满足开发需求

方式二、利用页面跳转带参

接口名说明最低版本
wx.miniProgram.navigateTo参数与小程序接口一致1.6.4
wx.miniProgram.navigateBack参数与小程序接口一致1.6.4
wx.miniProgram.switchTab参数与小程序接口一致1.6.5
wx.miniProgram.reLaunch参数与小程序接口一致1.6.5
wx.miniProgram.redirectTo参数与小程序接口一致1.6.5
wx.miniProgram.postMessage向小程序发送消息,会在特定时机(小程序后退、组件销毁、分享)触发组件的 message 事件1.7.1
wx.miniProgram.getEnv获取当前环境1.7.1

例如现在有一个场景: H5为一个列表页面,点击列表子项时跳转到原生小程序的详情页

H5:

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script>
function handleClick(e){
	let id = e.target.dataset.id
	let url = `/pages/detail/detail?id=${id}`;
	wx.miniProgram.navigateTo({
      url,
    });
}
</script>

小程序 /pages/detail/detail.js:

onLoad: function (options) {
	console.log(options.id)//接收H5传过来的数据
}

原生小程序 给 web-view内嵌H5 传参

原生小程序 给 web-view内嵌H5 传参就很简单了,原生小程序直接通过修改 web-view 的src属性就行了

'xxx.com?arg=123'

h5页面获取url上的参数,这种方式会使页面重新加载,如果不想引起页面加载可以通过修改hash

'xxx.com#123'

H5页面监听hash值变化:

window.onhashchange=function(){
    alert('hash值改变')
    console.log(window.location.hash)//获取当前hash值
}

总结

到此这篇关于微信小程序与webview H5交互的文章就介绍到这了,更多相关微信小程序与webview H5交互内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详谈LABJS按需动态加载js文件

    详谈LABJS按需动态加载js文件

    为了提高页面的打开和加载速度,我们经常把JS文件放在页面的尾部,但是有些JS必须放在页面前面,这样就会增加页面的加载时间;于是出现了按需动态加载的概念,这个概念就是当页面需要用到这个JS文件或者CSS渲染文件的时候,在去请求这些文件,这样就节省了页面的加载时间
    2015-05-05
  • Nuxt.js实现校验访问浏览器类型的中间件

    Nuxt.js实现校验访问浏览器类型的中间件

    Nuxt.js 就是一个Vue的服务端渲染框架,和React的服务端渲染框架类似。这篇文章主要介绍了Nuxt.js实现校验访问浏览器类型的中间件,需要的朋友可以参考下
    2018-08-08
  • javascript闭包概念简单解析(推荐)

    javascript闭包概念简单解析(推荐)

    下面小编就为大家带来一篇javascript闭包概念简单解析(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • JavaScript中new关键字的使用详解

    JavaScript中new关键字的使用详解

    在 JavaScript 中,new 关键字不仅是面向对象编程的关键要素,还是创建实例的重要手段,本文将深入探讨 new 关键字的使用,理解它在对象创建和构造函数调用中的作用,需要的朋友可以参考下
    2023-11-11
  • 浅说js变量

    浅说js变量

    JavaScript 是弱类型, 变量可存储任意类型, 并且运行期间类型可变
    2011-05-05
  • typescript中正则表达式的常用使用方法

    typescript中正则表达式的常用使用方法

    这篇文章主要给大家介绍了关于typescript中正则表达式的常用使用方法,TypeScript是一种静态类型的JavaScript超集,它提供了对正则表达式的全面支持,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • JavaScript比较两个对象是否相等的方法

    JavaScript比较两个对象是否相等的方法

    这篇文章主要介绍了JavaScript比较两个对象是否相等的方法,通过对js对象进行各方面的比较来判断两个对象是否相等,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • JS实现字符串转日期并比较大小实例分析

    JS实现字符串转日期并比较大小实例分析

    这篇文章主要介绍了JS实现字符串转日期并比较大小的方法,以实例形式较为详细分析了JavaScript字符串与日期操作的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-12-12
  • JS+CSS实现消息的点击展示和隐藏(H5端)

    JS+CSS实现消息的点击展示和隐藏(H5端)

    在 H5 端,我们经常需要实现类似于点击按钮来展示或隐藏消息的功能,以下是一个使用 CSS 和 JavaScript(配合 Vue.js)来实现这个效果的简单示例,需要的朋友可以参考下
    2023-10-10
  • BootStrap实现邮件列表的分页和模态框添加邮件的功能

    BootStrap实现邮件列表的分页和模态框添加邮件的功能

    这篇文章主要介绍了bootstrap分页,模态框,实现邮件列表的分页,和模态框添加邮件的功能的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10

最新评论