所以我的 HTML 中有一个音频元素:
<audio id="success-sound" class="hidden">
<source src="sound/success.mp3" type="audio/mpeg">
</audio>
声音在点击/触摸事件时播放。它在我的 Mac 上的 Safari 中运行良好,可以播放音乐。我正在创建一个 iOS 应用程序,尽管它有一个 Web View ,我在其中嵌入了我的 HTML5 应用程序。当我在 iPad 6.1 模拟器中尝试该应用程序并调试控制台时,我可以看到以下错误:
INVALID_STATE_ERR: DOM Exception 11: An attempt was made to use an object that is not, or is no longer, usable.
这是失败的行:
var successSound = document.getElementById("success-sound");
successSound.currentTime = 0;
successSound.play();
有什么想法吗?
顺便说一句,我有另一个音频元素,其配乐可以正常工作:
function startSoundtrack() {
soundtrack.play();
soundtrack.addEventListener('ended', function () {
var audio = this;
setTimeout(function () {
audio.currentTime = 0;
audio.play();
}, 5000);
}, false);
}
最佳答案
iOS 在 HTML5 方面似乎存在一些限制。拥有多个音频元素并在第一个音频元素在后台播放时播放第二个音频元素似乎很困难。
我已经通过使用 AVAudioPlayer 解决了这个问题,当我想播放声音时,我使用 JavaScript 通知 Web View 的 View Controller 。
关于javascript - 音频元素在 Safari 中工作正常,但在 XCode Simulator 中中断(Web View ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18562788/