xiaoliao998
xiaoliao998
  • 发布:2021-03-01 14:02
  • 更新:2022-08-11 18:47
  • 阅读:1198

【报Bug】cover-view组件覆盖video组件时,点击传透,无法阻止冒泡事件

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.1.3

手机系统: Android

手机系统版本号: Android 11

手机厂商: 华为

手机机型: 华为P40

页面类型: nvue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

见附件,demo,直接运行即可

操作步骤:

见附件,demo,直接运行即可

预期结果:

1,最好再video全屏时,对于左上角的后退,有单独的hook方法,
2,cover-view,完全覆盖,并且能阻止下层video事件

实际结果:

见Bug 描述,也可运行demo

bug描述:

cover-view组件覆盖video组件时,点击传透,无法阻止冒泡事件,
点击cover-view 组件时,会默认触发,video的暂停事件,很奇怪,因为默认video暂停或播放,也都是双击的。

因为项目,主要想实现一个场景,就是点击播放按钮,自动打开播放器,且直接是全屏播放的那种,此时,原生的video,当在全屏状态下,左上角后退键,只能支持退出全屏,那我必须得@fullscreenchange 事件中,监听到后,才能调用back方法,但是该方式,会造成掉帧,会从全屏-默认小屏-再次回退。

鉴于上述方式,实现有问题,我想到了用cover-view,覆盖video的方式,想盖住在全屏播放器上的,左上角的后退按钮,实现自定义点击,然后直接back,但是测试发现,点击cover-view组件,默认并不会直接执行我的back方法,反而暂停了视频。就算我加上了阻止冒泡事件,同样也不行

2021-03-01 14:02 负责人:无 分享
已邀请:
xiaoliao998

xiaoliao998 (作者) - null

没人关注?

DCMarvel

DCMarvel

改用NVUE 用view遮挡video

  • xiaoliao998 (作者)

    你确定可以?我记得好像,video全屏下,没办法用position 来定位遮住啊

    2021-03-07 11:44

DCMarvel

DCMarvel

NVUE全屏也可以啊

  • xiaoliao998 (作者)

    多谢,我一会测试下

    2021-03-07 16:53

  • xiaoliao998 (作者)

    你自己测试过吗?我怎么试了不行啊,,,

    <view>

    <video id="myVideo" :src="videoSrc" :autoplay='true' :loop='true' :direction='0'

    v-if='videoSrc' :show-fullscreen-btn='false' class='position-relative'>

    </video>

    <view class='position-fixed' style='top:44px;left:0;height:110rpx;width:100px'>

    <view class='w-100 bg-danger' @click='handleClick' style='height:100rpx;'></view>

    </view>

    </view>

    2021-03-12 11:36

xiaoliao998

xiaoliao998 (作者) - null

<template>  
    <view>  
        <view class='position-fixed' style='top:44px;left:0;height:110rpx;width:100px'>  
            <view class='w-100 bg-danger' @click='handleClick' style='height:100rpx;'></view>  
        </view>  
        <video id="myVideo" :src="videoSrc" :autoplay='true' :loop='true' :direction='0'  
         v-if='videoSrc' :show-fullscreen-btn='false' class='position-relative'>  
        </video>  

    </view>  
</template>  

<script>  
    export default {  

        onLoad(option) {  
            this.videoSrc = option.url  
        },  

        onReady() {  
            this.videoContext = uni.createVideoContext('myVideo')  
            this.videoContext.requestFullScreen({  
                direction: 0  
            })  
        },  

        data() {  
            return {  
                videoContext: null,  
                videoSrc: ''  
            }  
        },  

        methods: {  
            handleClick(e) {  
                e.stopPropagation()  
                this.goBack()  
                console.log('dianji')  
            },  

            goBack(){  
                uni.navigateBack({  
                    delta: 1  
                })  
            },  
        }  
    }  
</script>  

<style scoped>  

</style>  
DCMarvel
  • xiaoliao998 (作者)

    那就又回到了 我提的BUG了啊,唉

    2021-03-12 14:21

DCMarvel

DCMarvel

试试以下代码

<template>    
    <view>    

        <video id="myVideo" :src="videoSrc" :autoplay='true' :loop='true' :direction='0'    
         v-if='videoSrc' :show-fullscreen-btn='false' class='position-relative'>    
              <view class='position-fixed' style='top:44px;left:0;height:110rpx;width:100px'>    
                 <view class='w-100 bg-danger' @click='handleClick' style='height:100rpx;'></view>    
              </view>    
        </video>    

    </view>    
</template>    

<script>    
    export default {    

        onLoad(option) {    
            this.videoSrc = option.url    
        },    

        onReady() {    
            this.videoContext = uni.createVideoContext('myVideo')    
            this.videoContext.requestFullScreen({    
                direction: 0    
            })    
        },    

        data() {    
            return {    
                videoContext: null,    
                videoSrc: ''    
            }    
        },    

        methods: {    
            handleClick(e) {    
                e.stopPropagation()    
                this.goBack()    
                console.log('dianji')    
            },    

            goBack(){    
                uni.navigateBack({    
                    delta: 1    
                })    
            },    
        }    
    }    
</script>    

<style scoped>    

</style>  
Zzzd

Zzzd

请问解决了么

自用仓库

自用仓库

解决了么

要回复问题请先登录注册