从 INACTIVE 浏览器选项卡播放声音

Posted

技术标签:

【中文标题】从 INACTIVE 浏览器选项卡播放声音【英文标题】:Playing sound from INACTIVE browser tab 【发布时间】:2016-01-16 17:47:10 【问题描述】:

我有一个餐厅控制面板,它会在下订单时发出警报声。问题是,当控制面板选项卡不是 Chrome 中的活动选项卡(Firefox 也是如此)时,不会播放警报声音。单击选项卡后,它会播放声音。

我看到一些网站(Facebook Chat、Cloudstats.me 服务器警报,...)即使它们处于非活动选项卡中也会播放声音,那么解决此问题的方法是什么?

【问题讨论】:

【参考方案1】:

我也遇到过类似的事情,我们试图在股市开盘和收盘时播放市场时钟。我们遇到的问题是我们尝试加载 mp3,然后在满足条件时播放。所以最初我有。

var bell;

// Update the clock, countdown, and tooltips as needed.
function updateClock() 
    service.getMarketDate(function(data) 

        if (data.soundMarketBell) 
            if (!bell) 
                bell = new Audio('/sounds/marketclock.mp3');
            
            bell.play();
        
    );


var intervalId = $interval(updateClock, 1000);

通过将资源加载移动到页面加载时发生,然后调用 Audio.play 它解决了问题

var bell = new Audio('/sounds/marketclock.mp3');

// Update the clock, countdown, and tooltips as needed.
function updateClock() 
    service.getMarketDate(function(data) 
        if (data.soundMarketBell) 
            bell.play();
        
    );


// check for a time update every second
// to balance accuracy with performance
var intervalId = $interval(updateClock, 1000)

当标签页处于非活动状态时,浏览器会限制加载资源

【讨论】:

我很乐意看到某些文档:“浏览器在选项卡处于非活动状态时限制加载资源” span> 我不确定解释是否正确。下载 mp3 文件需要时间,所以第一次(至少)音频对象没有准备好导致“播放”失败。将这一行移到脚本顶部会在脚本加载后立即加载文件,以便文件可以播放。 可爱的解释 - 疯狂的东西【参考方案2】:

由于浏览器的自动播放政策,音频也有可能无法播放。

例如,在 Chrome 中,除非用户主动点击网页,否则音频不会播放。

您可以在此处找到完整列表: https://developers.google.com/web/updates/2017/09/autoplay-policy-changes

【讨论】:

以上是关于从 INACTIVE 浏览器选项卡播放声音的主要内容,如果未能解决你的问题,请参考以下文章

如果音频正在另一个选项卡或窗口中播放,如何关闭声音

chrome背景选项卡中的自动播放声音

电脑播放网页视频时只有声音没有画面怎么解决

在 facebook 嵌入式视频中设置自动播放时如何启用声音?

如何设置播放声音的断点

Swift:多个函数同时工作