如何在 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 函数中播放声音?的主要内容,如果未能解决你的问题,请参考以下文章