我正在尝试使用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均会ReactDOMServer设置到歌曲中的某个位置,但是该歌曲会播放两次。
有人知道这里可能有什么问题吗?
答案 0 :(得分:0)
对于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);