хук на js метода объекта браузера
От: jkilimov  
Дата: 20.12.18 19:20
Оценка:
приветствую!

мне нужно перехватить callback oncomplete объекта OfflineAudioContex. Пытаюсь сделать вот так:
    function audioRender() {
            try {
                var c;
                if (window.OfflineAudioContext) {
                    if (c = new window.OfflineAudioContext(1, 44000, 44000), !c) {
                        return '0';
                    } 
                };
                var osc = c.createOscillator();
                var compress = c.createDynamicsCompressor();
                osc.connect(compress);
                compress.connect(c.destination);
                osc.start(0);
                c.startRendering();
                c.oncomplete = function(g) {
                    сonsole.log('ON COMPLETE', g);
                    compress.disconnect();
                };
            } catch (u) {
             }
        }
// ==========================================================================

var audioHook = {
    original: undefined,
    hookFunc(g) {
        alert('1');
        console.log(g);
        this.original(g);
    }
}

Object.defineProperty(OfflineAudioContext.prototype, 'oncomplete', {
  get: () => {
      return oncomplete;
  },
  set: f => {
      audioHook.original = f;
      oncomplete = function(g) {
        audioHook.hookFunc(g);
      }
  }
});

audioRender();


функция audioRender не моя и может быть любой, мне нужно чтобы после перекрытия oncomplete сначала вызывалась моя функция, а из неё оригинальный колбэк.
сеттер отрабатывает ок, но вот потом oncomplete не вызывается. Как правильно это сделать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.