p5.js Safari play() pause() jump() problem



我正在尝试使用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);

最新更新