p5.js Safari play() pause() jump() 问题

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

我正在尝试使用 p5.js Javascript Library and Soundcloud API 制作音频播放器。大部分都运行良好,但我在 Safari 浏览器中遇到了一些小问题。

This is the website and the javascript file with all the functions is 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);