Safari拒绝播放MP3音频

时间:2019-05-27 19:18:17

标签: javascript safari html5-audio

除了Mac 10.14.5上的Safari 12.1.1之外,以下内容在每种浏览器中均能很好地工作:

new Audio('data:audio/mpeg;base64,/+MQxAAIi0Y4AUEQAfIAFABf///////////////////////////////OdyAYt4Aq///////jEsQECbvSvAGAaAD///////////////////+nX/+j//rc3//+scAljr//6h3BSxx+PB///+MQxAUKA4M8B4BpIv/////////////////+pX/5V//pLRUu3///2CZifmzf/+dS///////jEMQECZvWxAGAUAD/////////////////0b////1//54Xhr//+FcVzv//UYhE6gKAHSP/4xDEBAnDQtQfwBAD////////R/////////////lQxtrrqVGRysaVP/a6//QMwVrChGFZ/+MSxAQG41JAAAgPHIV4v////VjvR///////mlQBgmNQk8tiKmxY0z/////7f//+tH//rR//4xDEEAUwAegACES8//5YJmZMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq/+MQxCIAAANIAAAAAKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==').play();

直接在Safari的控制台中执行代码会产生以下结果:

  

承诺= $ 2

     

结果:NotAllowedError:用户代理不允许该请求   或当前上下文中的平台,可能是因为用户   拒绝权限。

     

代码:0

     

列:602

     

行:3

     

消息:“用户代理或平台不允许该请求   在当前情况下,可能是因为用户拒绝了许可。”

     

名称:“ NotAllowedError”

     

堆栈:“播放@ [本地代码]↵全局   代码↵evaluateWithScopeExtension@ ​​[native   代码]↵_evaluateOn↵_evaluateAndWrap“

     

DOMException原型

     

状态:“已拒绝”

     

承诺原型

     

catch(rejectionHandler)

     

构造函数:function()

     

finally()

     

然后(resolvedHandler,拒绝处理程序)

     

Symbol(Symbol.toStringTag):“承诺”

     

对象原型

如果代码可以调整为忽略此错误,那是什么如果不能忽略此错误,我应该使用哪种代码来避免触发错误?

没有框架/库。

运行Safari 8.0的经过验证的用户无法触发new Audio。我添加了if (typeof new Audio == 'object'),最终导致了整个问题。

0 个答案:

没有答案