如果 <video> 正在播放,请停止 <audio>

Posted

技术标签:

【中文标题】如果 <video> 正在播放,请停止 <audio>【英文标题】:If <video> is playing stop <audio> 【发布时间】:2011-05-27 13:22:12 【问题描述】:

在网页上,我使用几个音频标签来播放鼠标声音,并使用一个视频标签来播放视频。

现在,在播放视频时,应该停止并禁用音频。音频是这样触发的:

$(this).mouseover(function() 
    $('audio#' + $(this).attr('title') + '_sound').trigger('play');
);

现在应该添加这样的东西,我已经尝试了一些都不起作用的东西:

$(this).mouseover(function() 
    if($('#video') is NOT playing) 
        $('audio#' + $(this).attr('title') + '_sound').trigger('play');
    
);

以前有人做过类似的东西吗?

任何帮助表示赞赏:-)

谢谢!

【问题讨论】:

【参考方案1】:

html5 有一个 paused 属性。

var v = document.getElementsByTagName("video")[0];

$(this).mouseover(function() 
    if(v.paused)  // checks to see if video is paused
       $('audio#' + $(this).attr('title') + '_sound').trigger('play');
    
);

【讨论】:

更多信息请见documentation on paused 另外,请注意,并非所有浏览器都支持paused属性。 @orftz 感谢您发布文档。你知道有什么好的链接可以提供较少的paused 技术解释吗?当我发布这篇文章时,我正在寻找一个链接来包含它,它不像 W3 文档那么冗长。 我发现的关于paused 的唯一另一件事是this。根本没有关于这个的文档。【参考方案2】:

您应该注册一个事件监听器,以便在视频标签的暂停信号被断言时被调用。

var v = document.getElementsByTagName("video")[0];
v.addEventListener("pause", function()  audio.trigger("play"); , true);

【讨论】:

这是正确的 js 方式,考虑到 javascript 引入了事件驱动编程【参考方案3】:
var video = document.getElementById("myVideo");
var music = document.getElementById("myMusic");
var noOverlap = setInterval(
if(myVideo.paused == false)
    myMusic.pause();

, 1000);

这将检查两者是否每秒重叠,默认情况下,播放视频并暂停音乐。

【讨论】:

以上是关于如果 <video> 正在播放,请停止 <audio>的主要内容,如果未能解决你的问题,请参考以下文章

js控制html5 video标签中视频的播放和停止

静音的自动播放视频在 Safari 11.0 中停止播放

如何使用本机播放器而不是网络播放器播放 <video> 标签的视频?

如何判断 <video> 元素当前是不是正在播放?

MP4 视频在 <video> 标签中无法在 Firefox 上播放,如果直接打开则播放

HTML 5 视频播放状态覆盖