[微信小程序]WebView内嵌H5实现本地文件上传
【官方文档】
小程序与H5如何互相跳转
小程序与H5交互以上传文件为例
微信小程序开放能力web-view使用之h5页面与小程序页面交互传值
快速小程序开发之微信小程序内嵌 H5
微信小程序web-view嵌套H5实现微信支付功能解决方案
微信小程序webview内嵌h5页面
使用web-view组件后,小程序就可以像浏览器一样访问一个页面,看似非常简单。
做到上面那样只需要在wxml
页面里写上一行代码:
<web-view src="http://www.baidu.com"></web-view>
但实际上要真正的和小程序很好融合是很难的事情。
微信开发者工具调试webview
微信小程序 查看 webview 报错,打开webview调试器
webview打开的网页也可能需要在小程序开发工具中调试,但默认是看不到调试界面的,需要操作一下:
- 开发者工具调试器的选择元素按钮
- 左键点击模拟器界面的任意一处
- 右键单击,看到开发者工具左上角冒出调试按钮了
- 单击它开启一个新的调试窗口
半自定义顶部导航栏样式
由于<web-view>
会覆盖一整个页面,所以添加其他组件(包括自己的导航栏)都无济于事,如果要改变导航栏样式,就在该页面的json配置文件中配置即可,但标题文字会被覆盖,所以只能改标题文字颜色(黑,白)和标题背景色
{"navigationBarBackgroundColor": "#0891EA","navigationBarTextStyle": "white"
}
这样就可以改掉绿色的背景:
Vue导入微信SDK
如果我们想要离开web-view前往微信小程序其他页面呢?这时候就要使用微信提供的JSSDK提供的接口来和小程序互动:
官方文档里提供的示例代码中有js的引用地址:
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
但是其实里面是common-js的语法,微信为了方便用户使用,也提供了npm版本的包
vuejs 项目引入微信jssdk
(vue中js-sdk配置)微信公众号开发
npm isntall -S weixin-js-sdk
<script>
import wx from 'weixin-js-sdk'
console.log(wx)
</script>
webview页面传值给小程序
如果是一些较少的数据,可以在URL跳转时带上参数即可。POST大量数据时,官方提供的唯一接口是postMessage
方法。
首先小程序中,在
web-view
组件里绑定事件<web-view src="http://your.url.com" bindmessage="postMessage"></web-view>
function postMessage(data){console.log(data) }
然后H5页面中,正常使用上传文件,获取到数据后调用方法。注意这里的key必须是
data
,在yourdata
这里换上自己的数据wx.miniProgram.postMessage({ data: yourdata });
在之后小程序后退/组件销毁/分享后,web-view组件就能接收到H5页面发送过来的数据,控制台成功输出
- 从打印的内容可以看出,要获取当时页面发送的数据,需要通过
data.detail.data[第几批(0,1,2...)发送的数据]
得到
webview页面跳转到小程序的其他页面
文件上传成功后,需要自动跳转到小程序页面作下一步操作,这个步骤要在H5页面里实现,也是需要微信的JSSDK的。
wx.miniProgram.navigateTo({url: '/pages/index/index'})
由于postMessage(data)
需要特定的事件才会真正收到,那么最适合的事件就是小程序后退(即卸载页面来销毁web-view组件),这边可以关闭后再跳转到指定页面。
微信小程序web-view与H5交互:监听H5向小程序postMessage传值
wx.miniProgram.redirectTo({url: '/pages/homePage/setup/setup'});
MINE MIND系列将在我的GitHub上实时更新,同时精选部分汇总于CSDN专栏
GitHub仓库:https://github.com/IcyLeaves/MINE-MIND
CSDN专栏:https://blog.csdn.net/qq_37398834/category_10975647.html
[微信小程序]WebView内嵌H5实现本地文件上传相关推荐
- 实现微信小程序web-view内嵌H5中的下载功能(大文件切片下载)
实现微信小程序内嵌H5中的下载功能 一.项目场景: 难点 解决方案: 1.H5微信小程序: a.首先必不可少的是安装jweixin-module模块: b.在main.js中将依赖绑定: c.H5对应 ...
- 微信小程序webview内嵌H5页面缓存
微信小程序webview内嵌H5页面缓存 参考链接: link. 问题描述: 公司项目已经开发了一个移动端的vue项目,以微信小程序作为一个入口,节省资源去原生开发,webview成了最好的选择.vu ...
- 微信小程序webview内嵌h5页面
微信官方文档web-view | 微信开放文档 正式上线前准备(前期开发调试可以忽略) 首先登录小程序管理后台,把 web-view 直连的 h5 页面地添加到配置域名白名单中 比如我想要小程序直连地 ...
- 【愚公系列】2022年09月 微信小程序-webview内嵌网页的授权认证
文章目录 前言 一.webview内嵌网页的授权认证 1.内嵌页面 2.登录页面 二.web端相关函数 1.判断是否是小程序环境 前言 随着微信小程序的广泛应用,小程序的用户越来越多,但受其小程序体积 ...
- 微信小程序web-view内嵌公众号网页分享功能实现
web-view嵌入网页分享,有二种分享情况 1.小程序分享出当前打开的页面 2.部分页面要求,分享指定页面,而不是当前的页面 以下是代码部分 一.web-view内嵌公众号网页 ...
- 微信小程序实现pdf、word等格式文件上传的方法,微信小程序word文档
目前微信只支持从聊天记录里面获取文件 一.前言 目前微信提供了一个接口 wx.chooseMessageFile 它能让用户从聊天记录里面选择一个或者多个文件,然后返回它的一些信息,列入文件的path ...
- 微信小程序实现pdf、word等格式文件上传的方法
前言 微信提供了一个接口 wx.chooseMessageFile 它能让用户从聊天记录里面选择一个或者多个文件,然后返回它的一些信息,列入文件的path地址,文件名,文件的大小等. 获取这些信息再结 ...
- 微信小程序与内嵌网页交互实现支付功能
上个月,小程序开放了新功能,支持内嵌网页,所以我就开始了小程序内嵌网页之路,之前我只是个小安卓. 内嵌网页中可使用JSSDK 1.3.0提供的接口,可坑就来了,居然不支持支付接口的调用,经过一番研究, ...
- vant weapp 多选上传图片_微信小程序结合vant weapp ui实现多图上传组件
微信小程序多图上传 最近在写小程序的商品上传,为方便需要使用多张图片的上传的功能.因为小程序不支持数组的多张图片同时上传,然后根据自己的需求创建了一个组件希望能够帮到大家 效果图 创建一个图片上传的p ...
最新文章
- python神秘的魔法函数_python进阶之魔法函数
- 【转载】linux环境变量PS1的简介
- JDK 1.5 新特性——自动拆箱装箱
- 气象gis 解决方案_杜邦可持续解决方案全方位智能化应急管理系统解决方案
- 字符串 mysql索引,长字符串的MySQL索引
- 一个最简单的例子学会使用nodejs redis库进行数据库操作
- LinkedList类源码浅析(二)
- MSSQL · 最佳实践 · 利用文件组实现冷热数据隔离备份方案
- 如何查看文件的字符集
- 单线程实现同时监听多个端口(windows平台c++代码)
- Clojure 学习入门(7)- 连接mysql
- 简述static关键字、void与void *(void指针)、函数指针
- wps文件一点打印就关闭打印机服务器,WPS一打印就程序无响应怎么处理?
- JAVA对接大汉三通短信http接口
- 在chrome上安装印象笔记插件
- 快乐去学习「快乐机器学习」
- 计算机网络中OUI是什么意思,抓包出现oui Unknown是什么意思,请各位高手指教!!
- NestJs简明教程
- 关于Netty中的Recycler对象池
- 颠覆你想象的150个故事(1)
热门文章
- 隐私泄露杀手锏 —— Flash 权限反射
- LayaBox---TypeScript---类
- 【python作品分享】计算器1.0
- opencv 查找并绘制轮廓
- java中介源码_基于jsp的房屋中介管理系统-JavaEE实现房屋中介管理系统 - java项目源码...
- C语言实现基于查找和排序算法的学生成绩分析
- Linux下(CentOS7)下载并安装Python 3.9教程
- 手机浏览器下载的m3u8格式的多个视频文件合并成一个视频(Java实现)
- Cryptozoic隐生宙使用指南
- 联想Y7000--deepin深度操作系统安装出现的无线网卡驱动RTL8111/8168/8441问题---致搞了一整天的心