Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在移动设备中播放音频--Angular ng click,DOM Exception 35 NotAllowedError_Javascript_Angularjs_Mobile Safari_Soundcloud - Fatal编程技术网

Javascript 在移动设备中播放音频--Angular ng click,DOM Exception 35 NotAllowedError

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'

我有一个正在制作的网站,相当旧的网站,我不感兴趣完全改造

我有一个控制器,可以从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'
          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控件,而不是利用soundclouds
SC.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找到解决方案了吗?