若A页面中 有video视频组件,此时正在播放视频,在A页面中有一个链接到B的地址,点击后打开B页面,但A页面仍在播放视频
用的方法是<navigator :url="href">
若A页面中 有video视频组件,此时正在播放视频,在A页面中有一个链接到B的地址,点击后打开B页面,但A页面仍在播放视频
用的方法是<navigator :url="href">
我已经完美解决此问题
1、<navigator open-type="navigateBack"> 这里如果是uni.redirectTo 效果一样起不了任何卵作用
2、不要使用autoplay选项 但是可以使用loop
3、在onload里面使用this.videoContext.play(); 来实现自定义播放 完美解决
坑很多 需要慢慢踩~
试一下这个
<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>
楼主解决了吗?我用的uni.switchTab跳转,不知道该怎么暂停视频播放,跳转之后视频还在播放。
回复 Alonge: 解决了!
let url = item.videoSrc!=0 ? 'videoDetails' : 'details';
uni.navigateTo({
url: `/pages/details/${url}?data=`+item.id
})
2019-08-24 19:46
8***@qq.com - 前端小白
最近我也碰到这个问题了,我感觉是因为navigato的话,视频页面并没有关闭,所以视频还是在播放,使用redirectTo跳转,视频页面就关闭了,但是会导致下个页面无法返回视频页面。
春雷Le - 私信,接各种特效
把播放视频的播放属性交由父组件控制
onHide(){
for (let item of this.videoList) {
item.flag = false
}
},
示例:https://ext.dcloud.net.cn/plugin?id=1006
2020-7-14 : 解决了吗大佬们 ? 调 tabber 的
不用那么麻烦,两步,无论是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
[已删除]
我感觉 我的坑最大啊,我不是二级页面,视频在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