4

我有这个插件,它对 html5<audio>元素应用不同的样式,并为不支持 .mp3 文件格式的浏览器提供 Flash 回退。我遇到的问题是,一旦你开始播放一首歌曲,然后在任何一首歌曲上点击播放,它们都会同时播放,这是不好的用户体验。

我试图弄清楚如何编辑插件以使其一次只播放一首歌曲,所以说如果用户听了一首歌曲然后单击另一首歌曲播放,第一首歌曲应该暂停,依此类推。我不完全确定,但我认为需要按照这些思路进行编辑:

    playPause: function() {
      if (this.playing) this.pause();
      else this.play();
    },

但是,插件中有很多地方似乎处理播放和暂停歌曲,所以我不确定这是否完全正确。我对 jQuery 还是很陌生,无法完全弄清楚这个大型音频库是如何工作的,我一直在阅读代码注释,但仍然无法弄清楚这一点。

插件的完整代码在这里:http: //freshbeer.lv/mg/js/audio.min.js

官方插件网站: http: //kolber.github.io/audiojs/

你可以访问我的演示页面查看这个问题,只需点击几个播放器上的播放,您就会看到他们都在同时播放:http: //freshbeer.lv/mg/index.html

4

1 回答 1

7

使用 addEventListener 和 play 事件。这会暂停所有播放器,除了按下播放按钮的播放器。

        audiojs.events.ready(function () {
            var as = audiojs.createAll();

            $('audio').each(function () {
                var myAudio = this;
                this.addEventListener('play', function () {
                    $('audio').each(function () {
                        if (!(this === myAudio)) {
                            this.pause();
                        }
                    });
                });
            });
        });
于 2013-04-16T11:13:29.573 回答