Ipad 如何从soundmanager绑定HTML5::stalled事件?
我正在尝试编写一个javascript应用程序,它使用[SoundManager 2][1]api,目标是在 所有桌面和移动浏览器。在iPad平台上,Soundmanager使用HTML5音频api,因为没有flash支持。现在,当我尝试背靠背播放两个音频文件时,两个文件都是为了响应单击事件而加载的,偶尔会引发[HTML5::stalled][2]事件。如何设置事件处理程序以捕获暂停的事件 由于我的应用程序中的声音对象是动态创建的,我不知道如何直接访问SoundManager创建的标记,因此我尝试使用代理来处理暂停事件:Ipad 如何从soundmanager绑定HTML5::stalled事件?,ipad,html,soundmanager2,stalled,Ipad,Html,Soundmanager2,Stalled,我正在尝试编写一个javascript应用程序,它使用[SoundManager 2][1]api,目标是在 所有桌面和移动浏览器。在iPad平台上,Soundmanager使用HTML5音频api,因为没有flash支持。现在,当我尝试背靠背播放两个音频文件时,两个文件都是为了响应单击事件而加载的,偶尔会引发[HTML5::stalled][2]事件。如何设置事件处理程序以捕获暂停的事件 由于我的应用程序中的声音对象是动态创建的,我不知道如何直接访问SoundManager创建的标记,因此我尝
document.delegate('audio', 'stalled', function (event) {...});
它不起作用。事件没有引发以响应暂停。我的处理程序中有一个警报
还尝试使用[Sound::onsuspend][3]来监听暂停,但onsuspend弹出
在声音的末尾::播放。我们如何区分暂停事件和其他可能引发audio::suspend的事件?有没有其他方法可以访问SoundManager必须创建的标签才能播放HTML音频?我用以下解决方案解决了这个问题。逆向工程没有记录和发现这一点。 这一切都是关于访问html音频对象的,该对象在_a下可用
currentSound = soundManager.createSound({..});
currentSound._a.addEventListener('stalled', function() {
if (!self.currentSound) return;
var audio = this;
audio.load();
audio.play();
});
该方法的主体基于我用以下解决方案解决了它。逆向工程没有记录和发现这一点。 这一切都是关于访问html音频对象的,该对象在_a下可用
currentSound = soundManager.createSound({..});
currentSound._a.addEventListener('stalled', function() {
if (!self.currentSound) return;
var audio = this;
audio.load();
audio.play();
});
该方法的主体基于我可以建议使用三星智能电视平台对html5进行不同的修复:
var mySound = soundManager.createSound({..});
mySound.load();
setTimeout(function() {
if (mySound.readyState == 1) {
// this object is probably stalled
}
}, 1500);
这是因为在html5中,与flash不同,“readystate”属性几乎是瞬间从“0”跳到“3”,跳过“1”因为如果曲目开始缓冲,它可以播放
希望这也能对您起作用。我可以建议一种不同的修复方法,用于使用html5平台的三星智能电视:
var mySound = soundManager.createSound({..});
mySound.load();
setTimeout(function() {
if (mySound.readyState == 1) {
// this object is probably stalled
}
}, 1500);
这是因为在html5中,与flash不同,“readystate”属性几乎是瞬间从“0”跳到“3”,跳过“1”因为如果曲目开始缓冲,它可以播放
希望这对你也有用