【修复日常bug】解决微信小程序video组件initial-time属性不生效

我们来看微信小程序video标签的initial-time属性的描述:

指定视频初始播放位置,我这边是要做一个类似淘宝的商品详情播放视频的功能,我来举个例子:

我在商品详情页面播放视频进度到12秒,然后点击视频跳转到全屏播放,全屏我是单独做一个视频播放页处理的,所以我需要把视频播放进度传进视频播放页继续播放,这个视频播放页的视频一直播放到29秒,我退出视频播放页,需要把当前的29秒传回商品详情继续接着29秒播放,这个时候传回来的29秒赋值给video组件initial-time属性并不生效,到这一步,需要检查initial-time属性的值有没有生效,确认生效以后视频并没有接着播放,就可以按照我下面的代码来写。

 

重点

找到原因,initial-time属性值改变了但是没有生效,官方的描述是 “指定视频初始播放位置”,我们看下面代码:

 

wxml

<video wx:if="{{isShowVideo}}" initial-time="{{playVideoDuration}}" muted="{{isMuted}}" bindtimeupdate="bindtimeupdate" bindended="bindended" controls="{{videoControls}}" id="playVideo" poster="{{item.src}}?vframe/png/offset/1/w/400" src="{{item.src}}"></video>

 

js

// onShow调用此方法
  returnShow(){
    if(this.isProductDetailToPlayVideo === 1){
      this.isProductDetailToPlayVideo = 0
      let videoContext = wx.createVideoContext("playVideo")
      if(videoContext){
        videoContext.stop() //停止播放视频
      }
      this.isShowVideo = false  // 隐藏视频组件
      this.playVideoDuration = 0 // 初始播放进度
      this.$apply()

      if(videoContext){
        setTimeout(()=>{  //300毫秒延迟
          this.isShowVideo = true //显示视频组件
          this.playVideoDuration = wepy.$instance.globalData.playVideoDuration // 赋值继续播放的进度
          videoContext.play() //开始播放视频
          this.$apply()
        },300)
      }
    }
    console.error('returnShow')
  }

 

所以,要想触发initial-time属性的值,就需要停止当前视频播放,然后wx:if隐藏视频,再300毫秒延迟以后,重新显示video组件,把播放进度重新赋值,再调用视频播放。大概就是这么一个流程。

 

其实我也觉得这样麻烦,但是这是我找到唯一的解决方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小鸿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值