如何在 setInterval 函数中播放声音?

Posted

技术标签:

【中文标题】如何在 setInterval 函数中播放声音?【英文标题】:How to play sound in setInterval function? 【发布时间】:2015-08-02 07:20:49 【问题描述】:

我正在尝试刷新页面并比较它以检查表数据是否在间隔后被修改..&如果修改则播放通知声音。通知声音持续时间为 60 秒.但它只播放声音然后刷新页面。我如何暂停执行直到声音完全播放然后继续。

var foo = setInterval(function()
window.location.reload(1);
var myTable = document.getElementById('admin_id');
var rows =  myTable.rows;
var firstRow = rows[0];debugger;
    try 
     if ($.cookie('new') === null || $.cookie('new') === "" )
               
    $.cookie("new", firstRow["cells"][10].innerText);
    
    else
       
    var cookieValue = $.cookie("new");      
    if(cookieValue!=firstRow["cells"][10].innerText)       
        $.cookie("new", firstRow["cells"][10].innerText);
        //clearInterval(foo);
        document.getElementById('id_audio').play();             
    

    
    catch(err)alert(err.message);;
  , 1800000);

 //Audio TAg Code
<audio id="id_audio" src="sound.mp3" preload="auto"></audio>

【问题讨论】:

【参考方案1】:

当您重新加载页面时,页面中的所有内容(包括您的代码)都会被丢弃,并被新页面替换。上面的代码在reload 调用之后短暂运行(仍然在旧页面上),当它返回时,浏览器终止页面正在执行的任何正在进行的进程并重新加载页面。您的代码不会reload 等待页面重新加载然后继续运行。

让您的代码检查new cookie 在页面加载时运行,而不是您正在执行的操作。然后,当您重新加载时,只需重新加载 - 您的代码将在重新加载的页面上运行(加载时)。

如果您不希望代码在每次页面加载时都运行,而只是在重新加载时运行,请在重新加载之前在会话存储中设置一个标志并在加载时检查它:

重新加载时:

sessionStorage.reloadedAt = Date.now();
location.reload(1);

然后加载:

if (+sessionStorage.reloadedAt > Date.now() - 30000) 
    // Do your checks

3000ms = 三秒,酌情调整。

【讨论】:

以上是关于如何在 setInterval 函数中播放声音?的主要内容,如果未能解决你的问题,请参考以下文章

Javascript,循环播放声音

如何在 iOS 中录制声音?

在 C# 中确定何时播放响亮的声音

从 url 下载后播放声音文件

如何在Ubuntu启动时禁用声音效果?

解决:win10有提示音,但是播视频没有声音