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

时间:2015-08-02 07:20:49

标签: javascript php jquery audio

我正在尝试刷新页面并进行比较以检查表格数据是否在间隔后被修改。&如果被修改则播放通知声音。通知声音持续时间 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 个答案:

答案 0 :(得分:0)

当您重新加载页面时,页面中的所有内容(包括您的代码)都会被新页面丢弃并替换lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(' '.join((str(x) for x in lst))) 调用之后的代码会短暂运行(仍然在旧页面上),当它返回时,浏览器会终止页面正在进行的任何正在进行的进程并将页面加载到新的页面。您的代码等待reload页面重新加载然后继续。

使用您的代码检查页面加载时运行的reload cookie,而不是您正在做的事情。然后当你重新加载时,只需重新加载 - 你的代码将在重新加载的页面上运行(加载时)。

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

重装时:

new

然后加载:

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

3000ms = 3秒,适当调整。