javascript - 最小化 iPad 浏览器 safari 时仍在播放音频

标签 javascript jquery html ipad audio

我开发的游戏是 html5、Jquery、Javascript,我需要预加载几个音频。这些音频正在一个接一个地播放,但是当我将 iPad 最小化时,音频仍在播放。 任何人都可以在浏览器最小化时帮助暂停音频吗?当浏览器进入前台时,音频应该播放。

最佳答案

我已经完成了一半,可以为您提供完整的解决方案。这是我到目前为止所拥有的:

var audio = document.getElementsByTagName('audio')[0];
window.onpageshow = function() {
    audio.play();
}
window.onpagehide = function() {
    audio.pause();
}

因此,只要您在关闭 Safari 时在应用程序选项卡上,它就会暂停音频。并在您重新启动时播放它。当您更改标签时它不会停止。

如果您的应用程序是 apple-mobile-web-app-capable,当您使用主屏幕按钮打开应用程序时,这将触发 onpageshow,并在你关闭它。它并没有完全暂停,因为重新打开它会强制它从头开始。您必须使用 localStorage 或其他工具捕获您在轨道中的位置,然后在您重新打开它时将 currentTime 设置为该时间。

看起来您将能够使用 Visibility API根据 caniuse.com 在 iOS 7 中

为了历史的缘故,我至少要陈述一些我尝试过的其他事情。

  • window.onblur
  • 使用带有 setTimeout 的 requestAnimationFrame(这适用于台式机,但不适用于 iOS)

    var t;
    requestAnimationFrame(function checkWindow() {
        if ( audio.paused ) {
            audio.play();
        }
        clearTimeout(t);
        t = setTimeout(function() {
            audio.pause();
        }, 32);
    });
    

关于javascript - 最小化 iPad 浏览器 safari 时仍在播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17539373/

相关文章:

javascript - 2个重叠div上的mousemove事件

javascript - 没有使用ajax和旧jquery发送数据

javascript - 中间点击JS函数

javascript - 为棋盘游戏选择的语言(flash 或 HTML5/JS)

javascript - 动态地从对象数组中提取 key 并转换为对象数组

javascript - 类型错误 : Bad argument using Node. js fs.read()

javascript - 获取要在文本框中显示的多个元素值

javascript - 防止 jQuery timepicker 插件自动打开

jquery - 使用 ajax 时,在 iOS 中按住文本不会在 jQueryMobile 对话框中显示 'copy' 按钮

jquery - 客户端站点上的 Z-index 问题