jQuery 使用新源注入视频元素

发布于 2024-12-01 03:13:07 字数 1085 浏览 0 评论 0原文

每次我点击相应的链接时,我都会尝试使用 Chrome (我只有 webm 媒体资源)将 webm 格式的视频替换为另一个格式的视频。

我成功地将新源放入 src 属性中,然后使用 load() 和 play() 方法,但视频无法启动。当我手动将相同的网址放入 src 时,效果很好。

这是 HTML 的一部分:

<figure>
<video id="frag" autoplay controls>
<source src="" type="video/webm">
</video>
</figure>
<p>
<a href="#article3" class="game" rel="http://ninsuna.elis.ugent.be/Media/Showcase/Tennis/2009_FROpen_F_Federer-Soderling.webm?t=0.0,270.72">Game 1</a>
</p>
<p>
<a href="#article3" class="game" rel="http://ninsuna.elis.ugent.be/Media/Showcase/Tennis/2009_FROpen_F_Federer-Soderling.webm?t=317.04,379.88">Game 2</a>
</p>
...

和脚本:(

setTimeout(function() {
$(".game").click(function() {
var videoUrl = $(this).attr("rel");
$('#frag source').attr('src', videoUrl);
$('#frag').load();
$('#frag').play();
});
}, 1000);

由于某种原因我必须使用超时,文档加载不起作用,因为链接列表是动态生成的)

您可以在这里更仔细地检查它: 链接到我的网站

I'm trying to replace webm formated video with another one each time I click on corresponding link, using Chrome (I only have webm media resource).

I succeed in placing the new source in src attribute, following with load() and play() method, but video won't start. When I place the same url in src manually, works well.

This is a part of the HTML:

<figure>
<video id="frag" autoplay controls>
<source src="" type="video/webm">
</video>
</figure>
<p>
<a href="#article3" class="game" rel="http://ninsuna.elis.ugent.be/Media/Showcase/Tennis/2009_FROpen_F_Federer-Soderling.webm?t=0.0,270.72">Game 1</a>
</p>
<p>
<a href="#article3" class="game" rel="http://ninsuna.elis.ugent.be/Media/Showcase/Tennis/2009_FROpen_F_Federer-Soderling.webm?t=317.04,379.88">Game 2</a>
</p>
...

and the script:

setTimeout(function() {
$(".game").click(function() {
var videoUrl = $(this).attr("rel");
$('#frag source').attr('src', videoUrl);
$('#frag').load();
$('#frag').play();
});
}, 1000);

(for some reason I have to use timeout, document load doesn't work, for the link list is dynamically generated)

You can check it here more thoughrouly: link to my web

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

許願樹丅啲祈禱 2024-12-08 03:13:07

您正在对 jQuery 对象调用 play 方法,但该方法不起作用。您应该使用 get[0] 来获取 HTMLVideo 元素,然后对其调用 play 方法。这同样适用于 load 方法。试试这个

$(function() {
  $(".game").click(function() {
     var videoUrl = $(this).attr("rel");
     $('#frag source').attr('src', videoUrl);
     $('#frag')[0].load();
     $('#frag')[0].play();
  });
});

You are calling a play method on a jQuery object which will not work. You should either use get or [0] to get the HTMLVideo element and then call play method on it. Same applies to load method as well. Try this

$(function() {
  $(".game").click(function() {
     var videoUrl = $(this).attr("rel");
     $('#frag source').attr('src', videoUrl);
     $('#frag')[0].load();
     $('#frag')[0].play();
  });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文