QPlayer插件bug临时修复方案

本站主题使用的QPlayer这个开源的HTML插件是一款非常优秀的网页歌曲播放插件,但是该插件有一些小bug……

直接开始正题吧,这个小插件功能很强大,可以抓取网易云歌单并在你的网站播放歌曲。但是我在使用的时候发现了一些问题,就是当你快速重复点击歌单中的同一首歌或者快速点击其他歌曲的时候,有一定概率会出现重复播放的情况(就是同时或者略有延迟地播放很多首曲子),我找了其他几个同样使用该插件大佬的网站,发现同样存在这个问题,线上和他们交流的时候他们也说这个bug已经存在很久了,作者一直没有更新。由于网络原因,使用该插件播放音乐是有些微延迟的,难免会有访客尝试多次点击歌单,于是开始着手修复这个bug,在此提供两种解决方案。

(Qplayer插件)

1.第一种解决方案是一位大佬提供的:找到该插件对应的代码文件:

(QPlayer对应代码位置)

在loadMusic函数中将ajax请求从同步换成异步就可以。

(这里添一个false即可)

这个方案从根本上解决了这个bug,这个bug存在的原因就是因为ajax请求有延迟,而请求是同步的导致返回了多次,改为异步的就是不会存在这个问题了。但是这个方案的缺点就是音乐加载与切换的时间将会变得无法忍受(平均几秒,甚至更高),给人一种“这玩意儿是不是坏掉了的感觉”。

2.第二种解决方案是我自己找出来的。同样是找到该插件对应的代码文件,新增一个全局变量id_playing用来记录当前播放歌曲的id。

(新增全局变量id_playing)

接下来要做的事情就很简单了,找到switchTrack这个函数,增加一个判断,当要切换的歌曲id与现在正在播放的歌曲id一样的话,就什么也不做。

(增加一个if判断)

这样做就解决了多次点击同一首歌导致的重复播放问题。但是快速切换其他歌曲导致重复播放的情况依旧存在,而且当一首歌在播放的时候,再次在歌单中点击这首歌将不会重新开始播放。但是一般情况下很少有人会快速切歌,主流的音乐播放器播放一首音乐时再次点击这首歌也不会从头播放,最重要的是这种策略比第一种切歌速度快很多,因此我的网站使用了这个方案。

(这两种方法都比较简单,就不贴源码了)

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像

Title - Artist
0:00