4***@qq.com
4***@qq.com
  • 发布:2022-05-24 11:38
  • 更新:2022-09-01 12:00
  • 阅读:467

【报Bug】vue3自定义video作为子窗体嵌入vue页面 无法调用API

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Microsoft Windows 10 专业版 10.0.19044 内部版本 19044

HBuilderX类型: 正式

HBuilderX版本号: 3.4.7

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: 华为Mate40 pro

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
  • nvue界面:
<video id="myVideo" ref="myVideo" class="video" :poster="mainImg" :src="videoUrl"  
            :controls="false" :show-fullscreen-btn="false" :show-center-play-btn="false" :show-progress="false"  
            @ended="nextPlay" @timeupdate="processUpdate">  

<cover-view class="controls-top row" v-if="showControls">  
                <text class="iconfont" @click.stop="backHandle"></text>  
                <text class="title">{{title}}</text>  
            </cover-view>  
<cover-view class="controls-center center" @click="showHideConterols">  
                <text v-if="showControls && !play" class="iconfont stop" @click.stop="playVideo"></text>  
                <text v-if="showControls && play" class="iconfont stop" @click.stop="playVideo"></text>  
            </cover-view>  
</video>  

<script>  
onReady() {  
            this.videoContext = uni.createVideoContext('myVideo', this)  
        },  

playVideo() {  
                if (!this.videoContext) return  

                if (this.play) { //暂停  
                    this.videoContext.pause()  
                } else { //播放  
                    this.videoContext.play()  
                    //隐藏控制按钮  
                    this.showHideConterols()  
                }  
                this.play = !this.play  
            },  
</script>  

page.json配置界面

"path": "pages/course/course-play",  
            "style": {  
                "navigationBarTitleText": "",  
                "navigationBarTextStyle": "black",  
                "app-plus": {  
                    "titleNView": false,  
                    "subNVues": [   
                        {  
                            "id": "topVideo",  
                            "path": "pages/course/subNVue/app-video",  
                            "style": {  
                                "position": "dock",  
                                "dock": "top",  
                                "width": "100%",  
                                "height": "420px"  
                            }  
                        }  
                    ]  
                }  
            }

操作步骤:

1、创建nvue界面,编写自定义video代码(经测试该代码不作为子窗体引入作为单独页面可以正常播放)
2、创建vue界面并通过page.json配置subNVue子窗体,把上面创建的自定义video的页面嵌入
3、通过uni.createVideoContext获取video对象,调用相关API无反应

预期结果:

可通过API调用play、pause等方法

实际结果:

调用之后无任何报错信息、video一直停留在封面上没有播放视频

bug描述:

使用vue3创建项目,新建一个nvue页面,自定义video(进度条、全屏、播放暂停等),把这个nvue作为子窗体使用subNVue嵌入到一个vue界面中,使用video的play、pause等方法无效

2022-05-24 11:38 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com

解决了吗

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