我正在尝试使用p5.js Javascript Library和Soundcloud API制作音频播放器。大部分都能正常运行,但是我在Safari浏览器中遇到了一些小问题。
This is the website,具有所有功能的javascript文件为sketch.js。
网站上有一个进度条,单击该进度条应将jump指向歌曲中的某个点。
var progressBar = document.getElementById('progressBar');
progressBar.addEventListener("click", function(progbar) {
var percent = (progbar.offsetX / this.offsetWidth);
sound.jump(sound.duration() * percent);
sound.onended(endSong);
}, false);
在Firefox中,只要设置了sound.playMode('restart')
,它就可以正常工作。但是Safari创建了一个InvalidStateError
[将sound.playMode('sustain')
设置为Firefox和Safari时,将jump均等地设置到歌曲中的某个位置,但该歌曲播放了两次。
有人知道这里可能有什么问题吗?
我对Safari,Firefox和Chrome有以下解决方法:
progressBar.addEventListener("click", function(progbar) {
percent = (progbar.offsetX / this.offsetWidth);
setTimeout(function(){
Object.assign(sound, {_playing: true});
sound.playMode('restart');
}, 100);
sound.stop();
sound.playMode('sustain');
sound.jump(sound.duration() * percent);
}, false);