美文网首页
微信小程序踩坑记录

微信小程序踩坑记录

作者: CRJ997 | 来源:发表于2021-07-14 19:07 被阅读0次

    小程序Video组件

    问题1

    编写重播功能的时候,对于少于两个故事的视频进行重播的时候,因为两个故事已经被加载过了,这时候重新设置fileList不会触发bindprogress事件,所以使用seek方法返回到视频开头然后再进行播放。发现安卓seek方法结束之后,进行手动播放,视频不会继续播放(会自动暂停)。但是ios没有这个问题。
    解决方法:

    ios使用seek(0)加play()。
    android使用stop()加play()
    

    ios不使用stop是因为之前用过stop导致无法使用play()进行播放,原因不明。

    小程序自定义分析功能

    使用小程序自定义分析功能的时候,当需要进行保存和测试的时候,需要使用开发版进行测试并回传数据,而不是线上版和体验版。一般来讲自定义分析不要用来记录很难人为触发的错误,因为很难通过。

    小程序使用lottie

    官方的使用指南:https://developers.weixin.qq.com/miniprogram/dev/extended/utils/lottie.html
    踩了一个坑,就是改变了一些顺序

    wx.createSelectorQuery().select('#canvas').node(res => {
      const canvas = res.node
      lottie.setup(canvas)
      canvas.width = 50
      canvas.height = 50
      const context = canvas.getContext('2d')
      lottie.loadAnimation({
        loop: false,
        autoplay: false,
        animationData; animData,
        rendererSettings: {
          context
        }
      })
    }).exec()
    
    

    这时候会报一个错误: cannot set property fill of [object webGL Canvas Context2d] which has not set property
    感觉上就是lottie.setup(canvas)会冻结canvas属性(可能是Object.freeze)的设置,所以如果需要修改canvas的属性,在调用setup函数之前进行修改。也就是:

    wx.createSelectorQuery().select('#canvas').node(res => {
      const canvas = res.node
      canvas.width = 50
      canvas.height = 50
      const context = canvas.getContext('2d')
      lottie.setup(canvas)
      lottie.loadAnimation({
        loop: false,
        autoplay: false,
        animationData; animData,
        rendererSettings: {
          context
        }
      })
    }).exec()
    

    小程序onAudioInterruptionEnd的问题

    安卓在隐藏之后,如果当前没有播放的媒体,那么后面页面回到前台的时候,不会触发onAudioInterruptionEnd。IOS在隐藏之后,如果当前没有播放的媒体,那么后面页面回到前台的时候,会触发onAudioInterruptionEnd。

    小程序seek的问题

    试了一下,小程序的seek要在播放的时候才能用。其余情况好像无效。

    小程序textarea自动拉起键盘的问题

    通过focus去控制textarea渲染出来的时候自动拉起键盘。发现ios在第一次显示的时候,会出现先触发blur再触发focus的问题。导致focus值出现异常,后面的自动拉起键盘一直就无法调起来了(手动点击输入框可以恢复)。

    解决方案:在设置参数让textarea显示的时候,过一段时间(200ms)再让focus为true。

    小程序hidden的实现

    hidden在样式表里面的实现为:

    <view hidden></view>
    
    view[hidden] {
      display: none;
    }
    

    因为是标签结合属性,所以权重为0011, 很容易就被style和类覆盖。

    ui-app中使用的v-show,实际上不是vue的v-show,还是小程序的hidden,所以使用上可能会有疑惑

    相关文章

      网友评论

          本文标题:微信小程序踩坑记录

          本文链接:https://www.haomeiwen.com/subject/idxupltx.html