3

我正在使用一个名为 audio.js 的 javascript 垫片来提供带有 Flash 回退的 HTML5 音频。我现在可以在所有现代浏览器以及 Android 和 iO 中使用它,但是有一个问题我似乎无法解决,那就是在 Firefox 或 Android 中,当我使用在轨道结束时触发的回调时,我无法重播声音的。文件在播放结束时卡住。

该项目是一个幻灯片,其逻辑取决于每个轨道结束时触发的回调。这是我尝试使用回调的方式:

audio.trackEnded=function() {

    // operate on the DOM
    }

这是来自 audio.js API 的一点:

trackEnded: function(e) {
      this.skipTo.apply(this, [0]);
      if (!this.settings.loop) this.pause.apply(this);
      this.settings.trackEnded.apply(this);
    }

我没有任何运气深入研究 API 试图弄清楚如何重置音频文件。我所知道的是,无论我在 trackEnded 函数中添加了什么,在需要 Flash 的浏览器中,文件最后都会冻结,当我删除该函数时,音频会很好地重置。并尝试通过设置 currentTime = 0 来对音频元素本身进行操作;打破了整个事情。

这是音频冻结的演示,您可以在单击幻灯片后看到:

http://www.jontakiff.com/audio-playback/skeleton.html

任何关于我如何解决这个问题的见解都将非常感激。

编辑:这里是 audio.js API 的链接:http: //kolber.github.com/audiojs/docs/

4

1 回答 1

0

抱歉评论,只是看看页面代码。你可以试试 jQuery Connect 插件。这里有一些参考:

http://beyondrelational.com/modules/2/blogs/61/posts/11231/what-is-jquery-connect-how-to-use-jquery-connect.aspx

http://archive.plugins.jquery.com/project/jqConnect

jquery 代码如下所示:

$.connect(audio,'trackEnded',window,window.trackEnded);

请注意,您需要使用 trackEnded 函数作为格式的常规函数​​:

function trackEnded(){
    //code here
}
于 2012-05-13T16:35:05.353 回答