关于webview:小程序webview嵌入公众号网页并实现微信支付下载pdf
场景在微信小程序开发中,应用小程序web-view组件能够在小程序中嵌入一个H5利用。如果在公众号曾经开发实现了一个网页,之后又想在小程序中也开发一个雷同的利用,就能够间接应用webview组件间接套用一个已公布的公众号页面节俭很多开发成本。当有差异化性能时就能够通过微信sdk的接口进行以后是否小程序/公众号的判断,而后进行webview新页面的开发。 我的公众号网页是Vue+iView写的,小程序比较简单因为外围逻辑只是与webview进行通信,所以是原生编写。本篇次要解说应用webview遇到的一些问题解决办法以及调起领取、下载性能。简略建设一个原生小程序我的项目构造: 退出webview首先建设一个homepage.wxml,内容次要是一个webview组件嵌入公众号页面https://test.xxxx.com/wxgzh,传入openid和appid用于外部传递给生成订单的后端接口,ver参数能够保障页面不缓存(最新的页面): <!--index.wxml--><view class="container"> <web-view src="https://test.xxxx.com/wxgzh/?someid=38127&openid={{openid}}&appid={{appid}}&ver={{ver}}#/index"></web-view></view>在首页加载时调用官网wx.login接口申请用户登录小程序,登录后调取后端的登录接口去获取openid最终传递到webview中。homepage.js //homepage.jsconst app = getApp()Page({ data: { ver:'timesp', openid:'', appid:'' }, onLoad: function() { const accountInfo = wx.getAccountInfoSync(); console.log(accountInfo.miniProgram.appId, '小程序 appId') this.setData({ ver:new Date().getTime(), appid:accountInfo.miniProgram.appId, }) this.doLogin(); }, getLoginData(code){ let that = this; wx.request({ method:'post', url: app.globalData.baseUrl+'wx/wx/user/login', data: { data:{ appId:this.data.appid, code: code }, token:'' }, success (res) { console.log('获取openid胜利',res) that.setData({openid:res.data.data.openid}); }, fail(res){ console.log('获取openid失败') } }) }, doLogin:function(){ let that = this; wx.login({ success (res) { if (res.code) { //发动网络申请 that.getLoginData(res.code) } else { wx.showToast({ title: '登录失败!', }) console.log('登录失败!' + res.errMsg) } } }) }})给小程序加返回按钮到这里其实是曾经实现能够在小程序中关上公众号页面了,然而有个问题,当webview页面在外部进行多层跳转时,想返回上一层发现微信是没有明确的返回按钮的,影响体验。解决办法是在公众号网页外部本人实现一个公共有返回按钮的TopBar组件,然而咱们公众号页面是不须要这个TopBar的。有一个解决办法是创立一个两头者空页面作为小程序的初始页面index.js,当页面加载时立刻跳转到实在的首页homepage,这样做就能够强制让小程序显示出返回按钮了:index.js ...