Следующее прекрасно работает во всех браузерах, за исключением Safari 12.1.1 для Mac 10.14.5:
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 приводит к следующему:
Promise = $ 2
result: NotAllowedError: Запрос не разрешен пользовательским агентом или платформой в текущем контексте, возможно, из-за того, что пользователь отказал в разрешении.
code: 0
столбец: 602
строка: 3
сообщение: «Запрос не разрешен пользовательским агентом или платформой в текущем контексте, возможно, потому что пользователь отказал в разрешении. "
name:" NotAllowedError "
stack:" play @ [собственный код] ↵глобальный кодПрототип
состояние: «отклонено»
Обещание Прототипа
catch (rejectionHandler)
конструктор: function ()
finally ()
тогда (решеноr, rejectionHandler)
Символ (Symbol.toStringTag): «Обещание»
Прототип объекта
Если код можно настроить так, чтобы он игнорировалсячто это за ошибка или , если эту ошибку нельзя игнорировать, какой код использовать, чтобы избежать появления ошибок?
Нет фреймворков / библиотек.
Работает проверенный пользовательSafari 8.0 не может вызвать new Audio
.Я добавил if (typeof new Audio == 'object')
, что в итоге привело меня к этой общей проблеме.