【问题标题】:Preloading HTML5 video for smooth AJAX page transitions预加载 HTML5 视频以实现平滑的 AJAX 页面转换
【发布时间】:2014-07-16 05:20:59
【问题描述】:

查询

我正在通过 jQuery 的 .fade() 效果在页面之间创建平滑过渡。第二个页面 (page2.html) 包含 HTML5 视频元素(.webm.mp4 取决于浏览器)。如何在page2.html 加载之前预加载这些电影,以消除指示视频元素本身位置的短暂闪光/闪烁? (你知道,灰色的屏幕准确地显示了玩家所在的位置。)

明确地说,我不是询问如何消除页面加载之间的白色闪烁;我只是想在显示 page2.html 本身之前准备好视频播放器并完全加载电影。

代码示例

AJAX 淡入淡出过渡:

$('#wrapper').fadeOut(2500, function() {
  $(this).load('page2.html', function() {
    $(this).fadeIn(2500);
  });
});

来自 page2.html 的 HTML5 视频

<video id="example" preload="auto" autoplay="autoplay" loop="loop">
  <source src="video/example.webm" type="video/webm" />
  <source src="video/example.mp4" type="video/mp4" />
</video>

【问题讨论】:

  • 在淡入之前使用超时可能更容易。
  • 或许可以,但是如何保证视频加载超时?可以播放吗?
  • 淡入canPlayThrough 是最好的选择。
  • 有趣的解决方案。我会试一试,然后报告。您应该提交作为答案。 :-)
  • 坦率地说,是您提出解决方案的人 :) 如果您得到它的工作,只需发布​​您的解决方案作为答案。

标签: javascript jquery ajax html video


【解决方案1】:

感谢巴特。

var loaded = false;

//If the video is loaded...
example.addEventListener("canplaythrough", function() {

  //Make sure it only fires once
  if (loaded == false) {
    loaded = true;

    //Fade in the content
    $('#wrapper').fadeIn(2500);

  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多