我有一个简单的计时器应用程序,允许用户启用滴答声 - 每秒一次滴答。
我让它适用于主动& Chrome,Firefox和Edge 中的非活动标签。
我正在努力使用OSX Safari。无论我尝试什么,只要切换到另一个标签,它就会使声音静音。有趣的是,如果我分离标签并切换到另一个标签,它会不静音。这可能是因为勾选标签不是直接可见的,但也没有隐藏。
我用的是什么:
我不使用setInterval()
,因为浏览器倾向于休眠主线程。而不是那样,我使用简单的工人:
var worker = new Worker('/js/workers/IntervalWorker.js');
worker.onmessage = function (e) {
playStuff();
};
worker.postMessage('1000');
IntervalWorker.js
看起来像这样:
var interval = null;
onmessage = function(e) {
interval = setInterval(function() {
postMessage('');
}, parseInt(e.data));
};
playStuff()
使用咆哮库:
var snd = new Howl({
src: [ '/blah.mp3' ],
volume: 1.00,
});
snd.play();
// I have tried classic html5 audio tag, it makes no difference.
// Also please note that this is pseudo code,
// I DON'T actually create the Howl object every second
当标签本身处于非活动状态时,您是否有任何提示或黑客如何强制 OSX Safari 播放声音?