【问题标题】:Dynamically loading and autoplaying HTML5 video动态加载和自动播放 HTML5 视频
【发布时间】:2017-06-05 17:09:38
【问题描述】:

我正在尝试从 data-src 获取视频 URL,并将其添加到我的视频的 src。当我窥探页面代码但视频没有显示在页面上并播放时,我有很多工作。我正在使用 jQuery,因为我还有一些其他代码使用它来运行某些功能。

标记:

<video autoplay="autoplay" loop="loop" poster="/assets/video/bg-ss-vid.jpg">
    <source type="video/mp4" data-src="/assets/video/bg-ss-vid.mp4">
</video>

jQuery:

jQuery(document).ready(function ($) {
    "use strict";

    $("#site-hero video").each(function () {
        $('source', $(this)).attr("src", $('source', $(this)).data('src'));
        $('source', $(this)).removeAttr('data-src');
    });
});

如何在src 加载后显示/播放视频?

【问题讨论】:

  • 你试过$('#site-hero video').get(0).play()吗?
  • 我做了,但似乎没有用。
  • 嗯,你调试过它,看看为什么它不起作用?
  • @doutriforce 我所看到的只是。 &lt;source&gt; element has no “src” attribute. Media resource load failed. supersplash All candidate resources failed to load. Media load paused. 我认为这与它最初没有src有关。
  • 你不是想.play() 你设置了src吗?

标签: javascript jquery video html5-video autoload


【解决方案1】:

使用.play()添加它是src

jQuery(document).ready(function($) {
  "use strict";

  $("video").each(function() {
    var $source = $(this).find('source');
    var src = $source.attr('data-src');
    
    $source.removeAttr('data-src');
    $source.attr('src', src);
    $source.detach().appendTo($(this))
    
    $(this).get(0).play();
  });
});
video {
  width: 420px;
  height: 230px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<video loop="loop" poster="http://placehold.it/420x230">
    <source type="video/mp4" data-src="http://techslides.com/demos/sample-videos/small.mp4">
</video>

【讨论】:

  • 是的,这段代码仍然不适合我。它对你有用吗?我做了一个 JSFiddle jsfiddle.net/xoq2hLa2/1
  • 是的。就在sn-p上。它会自动播放并循环播放。
  • 有趣的是,它可以在 Safari 中运行,但不能在 Firefox 或 Chrome 中运行。我在几台电脑上试过。
  • @tylorreimer,我已经更新了答案。请再试一次。
  • 感谢@doutriforce,更新后的解决方案运行良好。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-04-05
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多