我正在尝试使用p5.js Javascript Library和Soundcloud API制作音频播放器。其中大部分运行良好,但我在 Safari 浏览器中遇到了一些小问题。
这是网站,包含所有功能的javascript文件是sketch.js。
网站上有一个进度条,单击它时应该跳到歌曲中的某个点。
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 都会平等地跳到歌曲中的某个点,但歌曲会播放两次。
有没有人知道这里可能出了什么问题?
我对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);