在HTML5 for IOS 8.1.3 Safari浏览器中。我正在使用背景音乐,使用AudioContext循环播放。最重要的是,一些语音音频随机出现,我使用了普通的音频对象(var _audio = new Audio())。
根据需要,所有工作都绝对完美。现在,当我按下主页按钮时,语音立即停止,但背景音乐继续播放。此外,如果我恢复野生动物园,请从已停止的地方继续播放声音。
我想到了几个解决方案:
不要对上下文使用loop属性。在结束回调时重新播放上下文。但这在我的情况下是不可能的。
使用“pagehide”和“pageshow”事件来了解浏览器进入或退出睡眠状态。这对我有用,但不适用于所有设备。我在多台iPad上检查这一点,所有这些都是IOS 8.但奇怪的是,在一些iPad中,事件根本没有触发。
所以我被困在这里。任何建议将不胜感激。感谢。
答案 0 :(得分:2)
使用页面可见性API可能会有更多成功。它有很好的support across browsers and devices。要覆盖所有供应商前缀:
var hidden, visibilityChange;
function onVisibilityChange() {
if (document[hidden]) {
// hidden, stop audio
} else {
// shown, restart audio
}
}
if (typeof document.hidden !== 'undefined') {
hidden = 'hidden';
visibilityChange = 'visibilitychange';
} else if (typeof document.mozHidden !== 'undefined') {
hidden = 'mozHidden';
visibilityChange = 'mozvisibilitychange';
} else if (typeof document.msHidden !== 'undefined') {
hidden = 'msHidden';
visibilityChange = 'msvisibilitychange';
} else if (typeof document.webkitHidden !== 'undefined') {
hidden = 'webkitHidden';
visibilityChange = 'webkitvisibilitychange';
}
if(visibilityChange !== undefined) {
document.addEventListener(visibilityChange, onVisibilityChange, false);
}