2016-10-01 3 views
-1

Я пытаюсь зарегистрировать все запросы, сделанные с использованием XmlHttpRequest в моей заявке.Изменение прототипа XmlHttpRequest для использования в веб-работниках

В моем приложении используется библиотека Tangram для визуализации карт WebGL. Tangram использует Web Workers для запроса данных для построения карты в отдельных потоках.

В голове моей HTML страницы У меня есть следующий код:

<!-- Log XMLHttpRequest --> 
<script> 

    (function(open) { 

    XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { 
     console.log(arguments); 
     return open.call(this, method, url, async, user, pass); 
    }; 
    })(XMLHttpRequest.prototype.open); 

</script> 

Это успешно регистрирует любые запросы, сделанные в основном потоке, но не в состоянии что-либо в пределах рабочих потоков скрученных вверх Tangram войти. Есть ли способ (желательно без изменения какого-либо исходного кода Tangram) для достижения того, что я пытаюсь сделать?

Примечание: Мой основной интерес заключается в расширении функциональности объекта XmlHttpRequest для использования в веб-рабочих - не обязательно для ведения журнала. Я просто использовал запись в качестве примера.

Цените любые советы/рекомендации, которые вы можете предоставить!

Strainy

+1

Рабочий и основной поток на самом деле не разделяют один и тот же экземпляр ... что-то, что я думаю, поэтому я предполагаю, что родные объекты - это разные экземпляры. – adeneo

ответ

1

Вы должны запустить тот же код в веб-работника. Рабочий работает с совершенно другим глобальным охватом. Никакие переменные, которые вы задали в основном потоке, не окажут никакого влияния на работника.

Я рекомендую вам поместить этот код в файл, чтобы вы могли ссылаться на него как с основного потока, так и с веб-работника.

+0

Спасибо за предложение. Я закончил выяснять, как импортировать скрипт в веб-работников Tangram, чтобы захватить XmlHttpRequests и отправить сообщения обратно в основной поток. – Strainy