LegendU
LegendU
  • 发布:2018-09-11 22:34
  • 更新:2020-07-14 17:20
  • 阅读:8456

uni-app 打开新页面,原先的页面video仍在播放

分类:uni-app

若A页面中 有video视频组件,此时正在播放视频,在A页面中有一个链接到B的地址,点击后打开B页面,但A页面仍在播放视频

用的方法是<navigator :url="href">

2018-09-11 22:34 负责人:无 分享
已邀请:
萧雨

萧雨

我已经完美解决此问题
1、<navigator open-type="navigateBack"> 这里如果是uni.redirectTo 效果一样起不了任何卵作用
2、不要使用autoplay选项 但是可以使用loop
3、在onload里面使用this.videoContext.play(); 来实现自定义播放 完美解决
坑很多 需要慢慢踩~

  • [已删除]

    我感觉 我的坑最大啊,我不是二级页面,视频在tab页面上,监听tab切换,官方说没用,我顶多监听个页面隐藏,但是页面隐藏里头不执行 for (let i = 0; i < that.recommend.length; i++) {

    if (this.recommend[i].bkNewArrivalsId ==that.spid) {

    let videoContextPrev = uni.createVideoContext(this.recommend[i].bkNewArrivalsId)

    videoContextPrev.pause();

    console.log(JSON.stringify(videoContextPrev))

    }

    },

    我是个视频列表,打开新页面倒是执行这一段

    2019-04-28 09:37

  • c***@qq.com

    回复 [已删除]: 完美解决了? 好郁闷这个问题!

    2019-05-15 13:06

  • 2***@qq.com

    你好 我现在也遇到这个问题 想问下你这个问题解决了吗

    2019-06-24 18:28

  • Alonge

    回复 [已删除]: 我跟你一样,也是tab切换,你的解决了么兄弟?

    2019-08-13 17:05

  • 风云杭州

    回复 [已删除]: 兄弟解决了吗? 我发现onHide 根本就不执行 方法

    2020-05-07 21:27

Trust

Trust - 少说废话

  • [已删除]

    就是切换页面的时候关闭原页面播放的视频, onHide() {

    let videoContextPrev = uni.createVideoContext(this.spid)

    videoContextPrev.pause();

    },

    他就是不行 循环关闭所有不行 ,记录正在播放的id 也不行

    2019-04-22 21:35

  • 风云杭州

    回复 [已删除]: 用 uni.setStorageSync('videoid',this.videoid); 可以更好的获得videoid

    2020-05-07 21:29

4***@qq.com

4***@qq.com

也发现了该问题,用redirect 模式,可解决

fategaga

fategaga

那我要是进行返回操作呢

[已删除]

[已删除]

有没有完美解决的

  • fategaga

    不知道啊

    2019-04-22 21:03

[已删除]

[已删除]

问题解决了吗 急死了

  • fategaga

    没解决啊

    2019-04-26 08:28

DCloud_UNI_HT

DCloud_UNI_HT

试一下这个

<template>  
    <view class="uni-padding-wrap uni-common-mt">  
        <video  
            v-for="item in lists"  
            :key="item"  
            :id="'myVideo' + item"  
            src="https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/%E7%AC%AC1%E8%AE%B2%EF%BC%88uni-app%E4%BA%A7%E5%93%81%E4%BB%8B%E7%BB%8D%EF%BC%89-%20DCloud%E5%AE%98%E6%96%B9%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B@20181126.mp4"  
            poster="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/poster.png"  
        ></video>  

        <view class="uni-btn-v"><button @click="sendDanmu" class="page-body-button">页面跳转</button></view>  
    </view>  
</template>  
<script>  
export default {  
    data() {  
        return {  
            lists: [0, 1, 2]  
        };  
    },  
    onReady: function(res) {  
        this.videoContext = {};  
        for (let i = 0; i < this.lists.length; i++) {  
            this.videoContext['myVideo' + i] = uni.createVideoContext('myVideo' + i);  
        }  
    },  
    onHide() {  
        for (let i = 0; i < this.lists.length; i++) {  
            console.log('myVideo' + i);  
            this.videoContext['myVideo' + i].pause();  
        }  
    },  
    methods: {  
        sendDanmu: function() {  
            uni.navigateTo({  
                url: '/pages/detail/detail'  
            });  
        }  
    }  
};  
</script>
  • 8***@qq.com

    你这个demo也是, 小程序正常, 5+app就不行了, 跳转到下个页面, 视频还在播放

    2019-10-21 14:53

c***@qq.com

c***@qq.com

楼主解决了吗?我用的uni.switchTab跳转,不知道该怎么暂停视频播放,跳转之后视频还在播放。

  • Alonge

    解决了吗

    2019-08-13 17:04

  • c***@qq.com

    回复 Alonge: 解决了!

    let url = item.videoSrc!=0 ? 'videoDetails' : 'details';


                uni.navigateTo({  
    url: `/pages/details/${url}?data=`+item.id
    })

    2019-08-24 19:46

3***@qq.com

3***@qq.com

求大神指点,怎么暂停视频播放,并且可以控制静音或者取消静音

8***@qq.com

8***@qq.com - 前端小白

最近我也碰到这个问题了,我感觉是因为navigato的话,视频页面并没有关闭,所以视频还是在播放,使用redirectTo跳转,视频页面就关闭了,但是会导致下个页面无法返回视频页面。

春雷Le

春雷Le - 私信,接各种特效

把播放视频的播放属性交由父组件控制

onHide(){  
    for (let item of this.videoList) {  
      item.flag = false  
        }  
},

示例:https://ext.dcloud.net.cn/plugin?id=1006

  • 风云杭州

    item.flag=false 啥意思? 终止视频组件的播放?

    2020-05-07 21:40

风云杭州

风云杭州

也遇到这个问题。。父组件的onHide 貌似不会执行 方法。

重新编译了下,好像又可以了

风云杭州

风云杭州

onhide,onshow,v-if 三者结合起来用,貌似可以解决问题

a***@163.com

a***@163.com

2020-7-14 : 解决了吗大佬们 ? 调 tabber 的

  • 风云杭州

    onhide函数 执行下 video.pause 就好了

    2020-07-14 20:23

  • 2***@qq.com

    不用那么麻烦,两步,无论是tabber还是navigateTo跳转,都要这么做,onUnload onBackPress onHide 里都循环处理一下,视频数据的播放状态,this.videoList[this.index].flag = false;

    for (let item of this.videoList) {

    item.flag = false

    } *****重点是,写完这种方法后,重要的一步,延时在执行一次,卸载hide周期里setTimeout(() => {

    console.log('延时执行了==========================')

    uni.hideLoading()

    that.videoList[that.index].flag = false;

    }, 1000); 、、、、、、、、、、、、、、因为,之所以视频声音没结束,是因为,你点的快,跳走的时候,他还在执行播放的语句没有结束,三个周期中第一种结束video的方法,它还是执行在了播放之前,延时在执行一次就可以了,我用的是1000,可以完美结束播放的音乐,即使点跳转飞快,也没问题,这个时间,可以根据自己项目运行的速度,自己决定

    2020-10-19 19:50

该问题目前已经被锁定, 无法添加新回复