Safari: TypeError: «Цель» прокси должна быть объектом - PullRequest
0 голосов
/ 13 апреля 2020

Я использую Web Audio, и у меня есть следующий код, который отлично работает в Chrome, но не работает в Safari.

const audioContextList = [];
(function () {
    self.AudioContext = new Proxy(self.AudioContext, {
        construct(target, args) {
            const result = new target(...args);
            audioContextList.push(result);
            return result;
        }   
    });
})();

В Safari я получаю следующую ошибку:

TypeError: «Цель» Прокси должна быть объектом

Как это исправить?

1 Ответ

1 голос
/ 13 апреля 2020

Safari 13.1 поддерживает AudioContext с префиксом поставщика: webkit.

Таким образом, вы должны получить к нему доступ с помощью self.webkitAudioContext. Или вы можете сделать вид кросс-браузерного решения

let AudioContext = self.AudioContext || self.webkitAudioContext;
self.AudioContext = new Proxy(AudioContext, {
  construct(target, args) {
    const result = new target(...args);
    audioContextList.push(result);
    return result;
  }
});  

...