Javascript 在移动设备中播放音频--Angular ng click,DOM Exception 35 NotAllowedError
我有一个正在制作的网站,相当旧的网站,我不感兴趣完全改造 我有一个控制器,可以从soundcloud播放列表中获取一组曲目,还有一些代码可以循环播放Javascript 在移动设备中播放音频--Angular ng click,DOM Exception 35 NotAllowedError,javascript,angularjs,mobile-safari,soundcloud,Javascript,Angularjs,Mobile Safari,Soundcloud,我有一个正在制作的网站,相当旧的网站,我不感兴趣完全改造 我有一个控制器,可以从soundcloud播放列表中获取一组曲目,还有一些代码可以循环播放 <div class='song' ng-repeat="song in SCSongs track by $index" ng-click="$root.play(song, $index)"> <i ng-show='$root.playing.id !== song.id'
<div class='song' ng-repeat="song in SCSongs track by $index" ng-click="$root.play(song, $index)">
<i
ng-show='$root.playing.id !== song.id'
class="fa fa-play-circle-o" aria-hidden="true">
</i>
<i
ng-show='$root.playing.id === song.id && !$root.playing.paused'
class="fa fa-pause-circle-o"
aria-hidden="true">
</i>
<i
ng-show='$root.playing.id === song.id && $root.playing.paused'
class="fa fa-play-circle-o" aria-hidden="true">
</i>
{{song.title}}
</div>
{{song.title}
问题是因为Safari 11和新版Chrome正在单击播放按钮导致未处理的承诺拒绝:NotAllowedError(DOM异常35):在当前上下文中,用户代理或平台不允许该请求,可能是因为用户拒绝了权限。
我是否需要使用html audio 5控件,而不是利用soundcloudsSC.play()
(假设这基本上是new audio().play()
safari上的文档没有那么大的帮助,因为它说如果点击,就会授予权限,这正是我所拥有的
我很感激处理过类似事情的人的洞察力。我们需要使用$event
触发一个游戏吗?这个更新一定破坏了所有东西
谢谢在使用safari的地方,您应该放弃使用“自动播放”。 要处理DOM异常,可以附加catch回调 例如:
document.getElementsByTagName('video')[0].play().catch(function(error) {
console.log(error)
})
如果使用safari,则应放弃使用“自动播放”。 要处理DOM异常,可以附加catch回调 例如:
document.getElementsByTagName('video')[0].play().catch(function(error) {
console.log(error)
})
我有完全相同的问题,你能在这方面取得任何进展吗?我️ 最终取消了SC并从我自己的服务器托管文件。对于我的用例是可行的,但如果你没有访问文件的权限,这显然对你不起作用。一旦文件从我自己的站点托管,就没有问题了。我️t可能与音频流的方式以及用户单击和缓冲区之间的延迟有关。我尝试了预加载,但没有骰子。@Nuzzob找到解决方案了吗?我有完全相同的问题,你能在这方面取得任何进展吗?I️ 最终取消了SC并从我自己的服务器托管文件。对于我的用例是可行的,但如果你没有访问文件的权限,这显然对你不起作用。一旦文件从我自己的站点托管,就没有问题了。我️这可能与音频流的方式以及用户单击和缓冲区之间的延迟有关。我尝试过预加载,但没有骰子。@Nuzzob找到解决方案了吗?