微信企业号开发遇到的bug

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只调用一次即可。

posted @ 2016-11-29 00:14  Ricky_boke  阅读(3331)  评论(1编辑  收藏  举报