Javascript 调整videoJS大小,调整容器大小,但实际视频仍为原始大小

Javascript 调整videoJS大小,调整容器大小,但实际视频仍为原始大小,javascript,jquery,html,video,video.js,Javascript,Jquery,Html,Video,Video.js,我正在调整窗口上videojs播放器的大小。调整大小 如果你愿意,黑色的“视频容器”会被调整大小,但实际的视频大小保持不变。它现在将在其容器内收缩(调整大小),或重叠其容器(调整大小为更小) 页面重新加载将重建玩家,并在其新边界内播放 我如何告诉它在不重新加载页面的情况下重新初始化新的大小 让这一点特别有趣的是,在我的本地主机开发web服务器上运行时,它似乎可以工作。在在线托管上运行它,会呈现上述问题 function redrawVideoPlayer() { var newHeig

我正在调整
窗口上videojs播放器的大小。调整大小

如果你愿意,黑色的“视频容器”会被调整大小,但实际的视频大小保持不变。它现在将在其容器内收缩(调整大小),或重叠其容器(调整大小为更小)

页面重新加载将重建玩家,并在其新边界内播放

我如何告诉它在不重新加载页面的情况下重新初始化新的大小

让这一点特别有趣的是,在我的本地主机开发web服务器上运行时,它似乎可以工作。在在线托管上运行它,会呈现上述问题

function redrawVideoPlayer() {

    var newHeight
    var newWidth
    newWidth = $(window).width() * 0.33;
    newHeight = newWidth * 0.75;

    $('#ytvidplayer').css('height', newHeight);

    $('#ytvidplayer').css('width', newWidth);

    //set related video div height eual to video height

    $('#related_vids_scroller').css('height', newHeight);

    var myVideo = videojs('ytvidplayer');
    myVideo.width(newWidth).height(newHeight);
    myVideo.load();
    myVideo.play();
}

我认为这是一种很酷的方法,即使在调整事件大小后也可以保持视频的纵横比。让我们把它分解一下:

  • 您需要一个resize函数,该函数接受视频的已知纵横比(在我的代码中,它是作为字符串传递到resizeVideoJS()函数中的“dimensionsize”参数,如“1920x760”。其他参数是初始化的videoJS视频对象“video”和浏览器窗口对象“win”。)我之所以传入参数,是因为我的代码分为两个模块,一个模块处理动作和助手函数,如resizeVideo或togglePoster等,另一个模块是一个小部件,用于初始化事件并将其绑定到视频对象。resizeVideoJS()函数在操作模块中定义,并在小部件中调用
  • 下面是代码:

    函数resizeVideoJS(视频、win、尺寸){
    变量宽度,
    aspectRatio;
    video.pause();
    aspectRatio=_calculateAspectratio(维度大小);
    
    宽度=视频。宽度()您确定在联机查看时看到的不仅仅是缓存问题吗?因为这都是客户端的问题,本地主机和其他环境之间应该没有什么区别。@MattMcClure,最近我遇到了与chrome及其window.load和document.ready事件处理相关的有趣问题。在这种情况下,chrome的行为不同在localhost上进行测试。我怀疑这里也有类似的问题。谢谢你的回答。这个问题早就从我的生活中消失了,所以我无法测试你的答案。希望它能在将来帮助其他人,然后我们可以将其标记为已解决。谢谢。