Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多个响应视频.js播放器_Javascript_Video_Video.js - Fatal编程技术网

Javascript 多个响应视频.js播放器

Javascript 多个响应视频.js播放器,javascript,video,video.js,Javascript,Video,Video.js,我正在使用这个解决方案,使videojs播放器流畅。我的问题是,当我有多个视频(每个视频都有一个唯一的id)时,我不知道如何才能做到这一点 这是我的开发网站,我有3个视频 以下是我为播放器编写的代码(来自上面Dave Rupert的解决方案): //一旦视频准备好 _V_(“#我的视频_1”).ready(函数(){ var myPlayer=this;//存储视频对象 var aspectRatio=9/16;//组成纵横比 函数resizeVideoJS(){ //获取父元素的实际宽度 v

我正在使用这个解决方案,使videojs播放器流畅。我的问题是,当我有多个视频(每个视频都有一个唯一的id)时,我不知道如何才能做到这一点

这是我的开发网站,我有3个视频

以下是我为播放器编写的代码(来自上面Dave Rupert的解决方案):


//一旦视频准备好
_V_(“#我的视频_1”).ready(函数(){
var myPlayer=this;//存储视频对象
var aspectRatio=9/16;//组成纵横比
函数resizeVideoJS(){
//获取父元素的实际宽度
var width=document.getElementById(myPlayer.id).parentElement.offsetWidth;
//设置填充父元素的宽度,设置高度
myPlayer.宽度(宽度).高度(宽度*纵横比);
}
resizeVideoJS();//初始化函数
window.onresize=resizeVideoJS;//在resize时调用函数
});

这段代码适用于一个视频,但如何处理多个ID???正如您在我的开发站点中看到的,我只是复制了上述脚本三次(每个脚本都有不同的id),这只会导致最后一个视频流畅。

每次都覆盖window.onresize(),因此只使用最后一个。 替换

与:

 window.addEventListener("resize", resizeVideoJS, false); // all browsers except IE before version 9

下面的工作。它确实涉及到一些重复,我认为如果您使用类似jQuery的方法等待所有视频播放器触发
ready
事件,您可能可以避免重复,但这比您当前所做的复制调整大小方法要整洁得多:

<script type="text/javascript">

    var players = ['my_video_1', 'my_video_2', 'my_video_3'];
    var aspectRatio = 9/16;

    // Catch each of the player's ready events and resize them individually
    // jQuery deferred might be a neater way to wait for ready on all components to load and avoid a bit of repetition
    for (var i = 0; i < players.length; i ++) {
        _V_('#' + players[i]).ready(function() {
            resizeVideoJS(this);
        });
    }

    // Loop through all the players and resize them 
    function resizeVideos() {
        for (var i = 0; i < players.length; i ++) {
            var player = _V_('#' + players[i]);
            resizeVideoJS(player);
        }           
    }

    // Resize a single player
    function resizeVideoJS(player){
        // Get the parent element's actual width
        var width = document.getElementById(player.id).parentElement.offsetWidth;
        // Set width to fill parent element, Set height
        player.width(width).height( width * aspectRatio );
    }

    window.onresize = resizeVideos;

</script>

var players=['my_video_1'、'my_video_2'、'my_video_3'];
var aspectRatio=9/16;
//捕捉每个玩家的就绪事件并分别调整它们的大小
//jquerydeferred可能是一种更简洁的方法,可以等待所有组件上的ready加载,并避免一些重复
对于(变量i=0;i
我稍微修改了net.uk.sweet上面非常有用的答案,使之成为一个工作脚本,它可以处理使用video js的多个视频播放器,这些播放器同样具有响应能力。您可以在此处找到我的文章(其中还显示了一个示例)=

如果您需要,它还包括一个提供的回调函数。

//jQuery deferred可能是等待ready的一种更简洁的方法
// jQuery deferred might be a neater way to wait for ready 
// on all components to load and avoid a bit of repetition
for (var i = 0; i < players.length; i ++) {
    _V_('#' + players[i]).ready(function() {
        resizeVideoJS(this);
    });
}

// Loop through all the players and resize them 
function resizeVideos() {
    for (var i = 0; i < players.length; i ++) {
        var player = _V_('#' + players[i]);
        resizeVideoJS(player);
    }           
}

// Resize a single player
function resizeVideoJS(player){
    // Get the parent element's actual width
    var width = document.getElementById(player.id).parentElement.offsetWidth;
    // Set width to fill parent element, Set height
    player.width(width).height( width * aspectRatio );
}

window.onresize = resizeVideos;
//在所有组件上加载,避免重复 对于(变量i=0;i
您可以使用css而不是javascript:

.wrapper {
    width: 100%;
}  

.video-js {
    padding-top: 55.25%;
}

     <div class="wrapper">                                 
      <video id="video-player" width="auto" height="auto" class="video-js vjs-default-skin vjs-big-play-centered" data-setup="{}">                                         
       </video>                                 
     </div>
.wrapper{
宽度:100%;
}  
.video js{
垫面:55.25%;
}

是的……这确实有助于调整所有三个玩家的大小。有没有想过如何整合js,使它不是重复3次的同一个脚本(它可以工作,但很难看&效率不高)?此链接将帮助您该链接现在提供404。
// jQuery deferred might be a neater way to wait for ready 
// on all components to load and avoid a bit of repetition
for (var i = 0; i < players.length; i ++) {
    _V_('#' + players[i]).ready(function() {
        resizeVideoJS(this);
    });
}

// Loop through all the players and resize them 
function resizeVideos() {
    for (var i = 0; i < players.length; i ++) {
        var player = _V_('#' + players[i]);
        resizeVideoJS(player);
    }           
}

// Resize a single player
function resizeVideoJS(player){
    // Get the parent element's actual width
    var width = document.getElementById(player.id).parentElement.offsetWidth;
    // Set width to fill parent element, Set height
    player.width(width).height( width * aspectRatio );
}

window.onresize = resizeVideos;
.wrapper {
    width: 100%;
}  

.video-js {
    padding-top: 55.25%;
}

     <div class="wrapper">                                 
      <video id="video-player" width="auto" height="auto" class="video-js vjs-default-skin vjs-big-play-centered" data-setup="{}">                                         
       </video>                                 
     </div>