a. 微信嵌入视频:
a.1 视频元素播放时层级默认被顶置
a.1 视频播放后窗口无法通过css改变层级
a.2 视频播放后窗口无法通过css隐藏
解决方案:做个假的播放窗口,点击播放窗口(假的)后弹窗进行播放,关闭弹窗时删除真正的视频元素
b. 微信录音:
a.1 开启wx.startRecord()接口后touchend事件无法触发(touchstart->touchcancel, 我也不知道为什么,就是这么奇葩)
a.2 某些机型录音超时不会onVoiceRecordEnd方法
a.3 iphone的语音不兼容android
解决方案:
a.1 没有太完美的解决方案!按住录音是暂时无法实现的了,只能通过点击事件来实现录音功能了(例如:点击开启录音按钮(开始录音)->点击结束录音按钮(结束且生成录音))
a.2 通过设置定时器来监听录音是否超过60s
a.3 通过后台转码成MP3
c. 页面缓存:
a.1 当你快速重复的点击微信公众号的一个链接时,有时会出现跳转失败问题(页面无法跳转,微信页面缓存与跳转指向出现了问题)
解决方案:每个跳转链接加上时间戳参数
d. 微信滑动:
a.1 微信下滑版本提示会使页面滑动变得卡顿不流畅
解决方案:
document.addEventListener('touchmove',function(e){ e.stopPropagation(); },false)
e. 部分安卓系统不支持Object.assign方法:
e.1 自己写一个对象合并方法
解决方案:
function assignObject(o, n) { for (var p in n) { if (n.hasOwnProperty(p) && (!o.hasOwnProperty(p))) o[p] = n[p]; } }
f. ios上传图片无法预览,ios新版系统微信浏览器使用了WKwebview内核,因为安全问题不能直接使用localId预览图片
f.1 可以通过wx.getLocalImgData()获取base64字符串预览图片,但是android得到的base64字符有偏差,少了图片类型头标识
f.2 最终方法:ios系统使用wx.getLocalImgData()获取base64字符串实现图片预览,如果base64字符不带图片类型标识则使用localId实现图片预览
解决方案:
wx.checkJsApi({ jsApiList: ['getLocalImgData'], // 需要检测的JS接口列表,所有JS接口列表见附录2, success: function(res) { // 以键值对的形式返回,可用的api值true,不可用为false // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"} if (res.checkResult.getLocalImgData) { wx.getLocalImgData({ localId: localId, // 图片的localID success: function(res) { var localData = res.localData; // localData是图片的base64数据,可以用img标签显示 if (localData.indexOf('data:image') == -1) { localData = localId; } showImageContainer.find("img").prop('src', localData); //放入图片 } }); } else { showImageContainer.find("img").prop('src', localId); //放入图片 } } });
g. 服务器使用https协议时,外链也需要使用https协议,否则ios系统不支持(android是支持的)
解决方法: 把外链的http协议转换成https协议(外链需要支持https协议)
H. wx.uploadImage不支持一次上传多张图片
解决方法:上传一张后再上传第二张......
I. ios系统vue单页面应用wx.config签名失败与jssdk分享接口配置无效
安卓系统单页面应用history模式下,切换路由需要使用当前的url重新生成配置信息(验证签名)重新调用wx.config接口。而ios系统则不需要,使用页面初始化的url生成配置信息wx.config只调用一次即可。