我构建了一个react应用程序,可以在桌面web浏览器上播放/暂停当前选定的音频:
playPreview() {
if (!this.state.isPlaying) {
this.setState({ isPlaying: true });
this.refs.audioRef.play();
} else {
this.setState({ isPlaying: false });
this.refs.audioRef.pause();
}
}
在iOS移动浏览器(safari和chrome mobile)上,我收到一个未经处理的拒绝(不受支持的错误):该操作不受支持。
我知道,在iOS上,音频必须通过用户的手势播放,但我用一次单击来启动我的方法:
{!props.isPlaying
? (<MdPlayCircleOutline className="play-btn" onClick={() =>
props.playPreview()} />)
: (<MdPauseCircleOutline className="play-btn" onClick={() =>
props.playPreview()} />)
}
我在父应用程序组件中有一个隐藏元素:
<audio ref="audioRef" src={this.state.currentSongUrl} style={{ display: 'none' }} />
所以我假设它不起作用,因为onClick不是直接的音频元素?如果是这样的话,我确信如何将这两个需求结合起来。
1-动态更改音频源
2-交替播放和暂停
提前感谢您的任何见解和帮助!
-托德