ajax - 带有 Video.js 和 AJAX 的 HTML5 视频

标签 ajax html html5-video video.js

我有一个 <div>包含 <video>元素,和一个 <ul> .单击 <ul> 中的一个元素导致 AJAX 调用更新 <div> 的内容.在我的第一次尝试中,第一个视频会正确加载,但随后单击不同的链接只会加载海报,而不会加载控件。经过一些谷歌搜索后,我找到了解决方案,它给我留下了以下 AJAX 调用:

$.ajax({
    // each video has its own unique ID
    url: "/Video?id=' + id,
    success: function (data) {
        $('#containing_div').html(data);
        // necessary to re-load video player controls
        _V_('video_' + id, { "controls": true, "autoplay": false, "preload": "auto" });
    }
});

将初始化调用添加到 _V_似乎有点帮助:现在当我切换视频时,“播放”控件按预期出现,我可以播放视频。但是,一旦我这样做,当我切换到另一个视频时,控件现在又消失了。此外,还有奇怪的随机错误:如果我多次更改视频,控件会突然莫名其妙地消失。此外,偶尔,在我切换到新视频后的一秒钟内,视频海报会完全消失。

显然,在页面加载时 Video.js 中发生了一些“魔法”,它不是由 AJAX 调用触发的,但我一直无法弄清楚那是什么。 <video> 没问题标签,因为最初它们都在页面中,并且通过改变它们的不透明度来隐藏/显示它们,并且效果很好(我想移动到 AJAX 的原因是当所有视频都加载时页面大小很大在线)。

最佳答案

事实证明,解决方案是在传出视频上调用 .destroy()(一个未记录的 API 函数):

if( currentVideoId ) {
  _V('video_' + currentVideoId).destroy();
}
$.ajax({
  // each video has its own unique ID
  url: "/Video?id=' + id,
  success: function (data) {
    $('#containing_div').html(data);
    // necessary to re-load video player controls
    _V_('video_' + id, { "controls": true, "autoplay": false, "preload": "auto" });
    currentVideoId = id;
  }
});

关于ajax - 带有 Video.js 和 AJAX 的 HTML5 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9642196/

相关文章:

javascript - 在可放置的背景中保持图像大小

javascript - Ajax 表单验证的优点和缺点

php - 如何安全地处理进出数据库的文本区域数据?

html - 未触发媒体查询

html - 是否可以制作带有视频的横幅广告,例如谷歌广告的尺寸限制?

javascript - 有什么方法可以使用javascript或css在firefox中删除图片中的图片?

javascript - PHP header() 不重定向,仅发布重定向页面的 HTML

PHP header 位置 - 不断刷新 - 使用 exit() 它不会显示页面(空白页面)

javascript - jquery div onclick调用函数

javascript - 从 iPad 中 html5 <video> 元素上的点击/触摸事件重定向到另一个页面?