在微信公众号网页和小程序开发的过程中,难免会遇到一些知识外的兼容问题。在此记录我所遇到的问题,以便给需要的前端开发者查阅。
1、小程序使用外部字体
使用微信自带api,开发工具上有效,但真机测试无效
// 加载网络字体wx.loadFontFace({ family: this.data.fontFamily, source: 'url("https://xxx.xxx.xxx/Farrington7B_Qiqi.ttf")', success(res) { self.setData({ fontLoaded: true }) },});
将字体进行base64编码,引入css,工具网站:https://transfonter.org
@font-face { font-family: 'Farrington-7B-Qiqi'; src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff2'), url(data:application/font-woff;charset=utf-8;base64,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) format('woff'), url('Farrington-7B-Qiqi-.ttf') format('truetype'), url('Farrington-7B-Qiqi-.svg#Farrington-7B-Qiqi-') format('svg'); font-weight: normal; font-style: normal;}
2、tabbar
小程序自带的tabbar不灵活,最好使用自定义tabbar
3、小程序与H5交互跳转
小程序->H5,引入webview即可
H5->小程序
1、引入外部js<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></ script>2、跳转wx.miniProgram.navigateTo({url: '/pages/index/index'});navigateTo不能跳转到tabbar页面switchTab不能传参reLaunch重新加载小程序,可以传参wx.miniProgram.reLaunch({url: '/pages/index/index?cookie=' + data.cookie})
4、小程序网络请求不保存Cookie,导致每次都会重新创建新的会话
解决方法:
登录成功后,先保存到stroage中,再请求其它服务时将cookie添加到请求头中
// 网络请求const ajaxData = (transCode, params, successFn, failureFn) => { let header = { 'content-type': 'application/json' }; let cookie = wx.getStorageSync('cookie'); if (cookie) { header.Cookie = "SESSION=" + cookie; } wx.request({ url: 'https://xxx.xxx.xxx/webank/' + transCode + '.do', data: params, method: 'POST', header: header, dataType: 'json', success(res) { successFn(res.data) }, fail(res) { if (null != failureFn){ failureFn(res); }else{ } } })}
5、IOS打不开小程序的webview
以下三种可能仅供参考
1、业务域名未配置2、H5的url必须是https3、url中不能含有汉字等比较特殊的字符,如果必须要有,请encodeURIComponent
6、JSSDK调起相机,图片转base64
安卓和IOS系统表现不同,IOS自带图片文件头
wx.chooseImage({count: 1,sizeType: ['original', 'compressed'],sourceType: ['album', 'camera'],success: function (res) {var localIds = res.localIds[0];wx.getLocalImgData({localId: localIds,success: function (res) {var localData;if("ios" == window.Device.os){localData = res.localData;}else{localData = "data:image/png;base64," + res.localData;}}});}});
7、微信JSSDK调起摄像头可以在微信客户端中展示图片,但在电脑上无法预览
<img src="data:image/png;base64,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