我有一个通过 JavaScript 使用音频的 HTML5 网页。我有一个基本版本,可以加载正确的音频文件(例如,ogg vs mp3 等),然后正确播放该文件中的精灵。这个基本版本只有 1 个 javascript 文件,它适用于我尝试过的所有操作系统/浏览器组合,包括:OSX (Safari, Chrome, Firefox), iOS 5 and 6 (Safari), Windows 7 (Firefox, Chrome),和安卓 4.2 (火狐)。
我现在将代码插入到生产版本中。现在,HTML 页面加载了许多其他 JavaScript 文件(例如,jquery、jquery ui、flot)。但是,所有音频代码都在一个文件中,该文件通过
<script src="/foo/bar/sound.js"></script>.
在这两种情况下,sound.js 中的代码都是由用户单击按钮调用的。在上述所有平台/浏览器组合上,组合代码在 iOS 上除外(在 iPad2 和 iPad3 上的 iOS 5 和 6 上测试)。我得到的错误是
INVALID_STATE_ERR: DOM Exception 11: An attempt was made to use an object that is not, or is no longer, usable.
这发生在尝试根据所需的特定精灵设置 mySound.currentTime 的行上:
mySound.currentTime = spriteData[currentSound].start;
mySound 是我的声音对象,并且 spriteData 是正确的。奇怪的是,在真实 iPad 上失败的相同代码在 iOSSimulator 中运行良好,无论我模拟 iOS 5 还是 iOS 6。
我该如何调试这种情况?我不知道在哪里寻找和尝试什么。任何建议,将不胜感激。