问题描述
我使用 videojs 创建了一个视频播放器的自定义 Web 组件。如果我将 ViewEncapsulation 保持为 Emulated,则 padding:0 工作正常,视频播放器显示正常,高度和宽度可以动态更改。但是当我将 viewEncapsulation 保持为 shadowDom 时,视频播放器 Padding:0 使它粘在顶部并且她的播放器不会出现。
import { Component,ElementRef,Input,OnDestroy,OnInit,ViewChild,AfterViewInit,ViewEncapsulation,OnChanges,SimpleChanges } from '@angular/core';
import videojs from "video.js"
import { IOptions } from './IOptions';
@Component({
selector: 'app-video-player',templateUrl: './my-video-player.component.html',styleUrls: ['./my-video-player.component.scss'],encapsulation:ViewEncapsulation.ShadowDom
})
export class MyVideoPlayerComponent implements OnInit,AfterViewInit {
@ViewChild('target') target;
// see options: https://github.com/videojs/video.js/blob/mastertutorial-options.html
@Input('myOptions') Options: IOptions;
player: videojs.Player;
constructor(
private elementRef: ElementRef,) { }
ngAfterViewInit(): void {
// instantiate Video.js
this.videoPlayer(this.Options);
}
ngOnChanges(changes: SimpleChanges): void {
console.log(changes.Options);
}
ngOnInit() {
// this.addingComponents();
}
ngOnDestroy() {
// destroy player
if (this.player) {
this.player.dispose();
}
}
// addingComponents(){
// this.player=videojs(this.elementRef.nativeElement);
// videojs.getComponent();
// const skipBehindButton = this.player.controlBar.addChild("button");
// var skipBehindButtonDom = skipBehindButton.el();
// skipBehindButtonDom.innerHTML = "30<<";
// skipBehindButton.addClass("buttonClass");
// var skipAheadButton = this.player.controlBar.addChild("button");
// var skipAheadButtonDom = skipAheadButton.el();
// skipAheadButtonDom.innerHTML = ">>30";
// skipAheadButton.addClass("buttonClass");
// }
videoPlayer(myOptions){
// console.log(this.Options)
let myobj=JSON.stringify(myOptions);
let NewSource=JSON.parse(myobj);
console.log("NewSource",NewSource)
let FinalSource=JSON.parse(NewSource);
console.log("FINAL SOURCE",FinalSource)
console.log(this.target.nativeElement);
this.player = videojs(this.target.nativeElement,FinalSource,onPlayerReady);
function onPlayerReady() {
console.log('onPlayerReady',this);
this.on('pause',()=>{
console.log("video is paused")
})
this.on('ended',function(){
videojs.log('over so soon?');
})
this.on('ready',function(){
setTimeout(()=>{
this.height();
this.play();
this.playbackRate(2);
console.log("boom")
},3000)
})
this.on('pause',function(){
let remaing=this.remainingTime();
remaing=Math.round(remaing);
console.log(remaing);
})
this.on('seeking',function(){
let remaing=this.remainingTime();
remaing=Math.round(remaing);
console.log(remaing);
})
}
}
}
这是图片。
正如您在图片中看到的,填充为 0 时,播放器会粘在顶部,我无法更改高度和宽度。这里有什么问题?
模拟工作正常,但我的要求是 ShadowDom。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)