jQuery - 带有视频的标签...当我在标签之间切换时如何让视频停止播放?

Posted

技术标签:

【中文标题】jQuery - 带有视频的标签...当我在标签之间切换时如何让视频停止播放?【英文标题】:jQuery - Tab with videos... how do I get videos to stop playing when I switch between tabs? 【发布时间】:2012-02-02 15:42:18 【问题描述】:

我是 jQuery 新手,我设法创建了一个选项卡界面。我希望我的标签的每个部分都有一个 YouTube 视频。但是,例如,当我在选项卡 1 上的视频上单击播放,然后切换到选项卡 2 时,选项卡 1 上的视频仍会继续播放。请在此处查看完整代码:

http://jsfiddle.net/WwfFE/3/

对于如何在用户点击其他标签后停止视频提供任何帮助,我将不胜感激。

另外,当我在支持 Flash 的 android 手机上运行此程序时,视频似乎无法播放。知道我需要做什么来修复吗?还是我需要修复任何其他东西以使代码浏览器兼容?

【问题讨论】:

见:video won't stop when div is hidden。 嗨,Rob,非常感谢。一般来说,我对 javascript 真的很陌生 - 所以希望能深入了解如何在我的代码中准确地实现这一点。谢谢! 如果您是 JavaScript 新手,并且愿意学习它,我最好的建议是:Bury jQuery,并首先学习 basics of JavaScript。 对问题的回应:可以在此处找到更简单的 YouTube API 实现:Youtube iframe API: how do I control a iframe player that's already in the html? 嗨,Rob,非常感谢。我一定会检查出来的。什么是埋葬 jQuery?那是一本书吗?我在哪里可以找到它。另外 - 我很感激这个链接......我会试着弄清楚,如果我遇到问题会告诉你。 “埋葬 jQuery”,我的意思是你最好不要使用jQuery,因为它不会教你如何编写 JavaScript 代码。 当你掌握了 jQuery 之后,你对 JavaScript 的了解还不是很多。 【参考方案1】:

这应该可行:

http://jsfiddle.net/WwfFE/5/

我只是将您所有的 URL 放在一个数组中。当用户决定离开选项卡时,我清除了iframesrc,以便视频“停止”播放。

虽然你的currentTab 变量第一次仍然为空,所以我通过查看哪个<li> 的类设置为active 来检索它。从这个<li> 获取链接并将currentTab 变量设置为其href

if (currentTab == '') 
   //Find current tab:
   currentTab = $('#tabs ul li.active').find('a').attr('href');


//Stop playing video:
if (currentTab != '')
   $('div#' + currentTab).find('iframe').attr('src', '');

当他回到任何标签时,你不应该忘记将src 设置回来,否则你的 iFrame 将是空的。这就是我在这里所做的:

var index = $(this).attr('id');
$('div#' + currentTab).find('iframe').attr('src', urls[index]);

此代码仍然可以优化以减少闪烁。一个简单的方法是在iframeload 触发器上设置一个函数。这样您就知道视频何时已成功设置,然后您想向用户显示标签。

【讨论】:

朱尔斯,你真是太棒了。非常感谢。我一直在花费数小时试图弄清楚这一点。非常非常非常感谢您的帮助。 欢迎您。我很高兴它有帮助。有时只需要一点点创造力... ;-) 嗨 Jules - 我希望一切都好。如果您不介意,我有一个关于此代码的后续问题。请看:***.com/questions/9169305 感谢出色的解决方案,只有 1 个问题:如何“非随机化”第一个显示的选项卡?页面加载时始终加载第一个选项卡和内容。 @yiyong 随机选项卡是通过以下方式生成的:var index = Math.floor($tabs.length * Math.random()); $tabs.eq(index).show(); 所以你可以把它替换为 $tabs.eq(0).show();顺便说一句,如果对您有帮助,请为答案投票。 :)【参考方案2】:

在不使用 iframe 或视频 ID 的任何特殊定位的情况下,以下是我在选择其他标签时停止播放电影的方法。使用本机引导选项卡事件:

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) 
    var iframe = $(e.relatedTarget.hash).find('iframe'); 
    var src = iframe.attr('src');
    iframe.attr('src', '');
    iframe.attr('src', src);
s);

【讨论】:

谢谢!超级有用且简单的 sn-p。

以上是关于jQuery - 带有视频的标签...当我在标签之间切换时如何让视频停止播放?的主要内容,如果未能解决你的问题,请参考以下文章

jquery标签下的CSS错误

jQuery使用数据目标更改带有onClick侦听器的一组单选按钮标签的innerHtml

我在屏幕上放置了一个带有自动布局的 UILabel,但是当我隐藏导航栏时,它会导致标签“抽搐”一秒钟 [重复]

jquery 如何设置video标签的时间!

插入带有多个标签的 InfluxDB 时“缺少标签键”

JS 发送带有 django 标签的 html