Обновление: Спасибо за ответы до сих пор. Чтобы уточнить, я на самом деле не ищу регистратор, а скорее отладчик / трассировщик - Я хочу получить дамп каждого фрагмента JavaScript, который выполнялся и когда он выполнялся . Я попробовал Venkman ранее сегодня, но это не очень стабильно. Моя теория состоит в том, что что-то идет не так в глубине кода Dojo или даже кода Firefox.
Это происходит только в Firefox 3.5 - 3.6 , когда Firebug отключен (или просто не установлен).
По сути, я отправляю запрос AJAX в Dojo 0.4.3 (я знаю!), Используя dojo.io.bind (теперь не рекомендуется!). Если вы знакомы, он использует dojo.io.XMLHTTPTransport в качестве транспорта. Теперь, в основном, он работает так, что отправляет XHR, а затем имеет функцию-наблюдатель startWatchingInFlight
, которая вызывается каждые 10 мсек для проверки свойства readyState в XHR. Когда свойство равно 4, оно делает кучу вещей:
dojo.io.XMLHTTPTransport = new function () { /* I know, I know. I would never do this */
// somewhere in XMLHTTPTransport ...
this.startWatchingInFlight = function () {
// alert('watching...');
if (!this.inFlightTimer) {
this.inFlightTimer = setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();",10);
}
};
this.watchInFlight = function () {
// alert('a glance');
// do a bunch of stuff...
var tif = foo(); // well, never mind how we get it but it's the object in flight
// tif.http is the XHR object
if (4 == tif.http.readyState) {
// call some stuff
}
}
this.bind = function (args) {
// somewhere in XMLHTTPTransport.bind ....
this.startWatchingInFlight();
http.send(query); // Again, http is the already-opened XHR object
// and so on
}
}
Теперь вот самое интересное! Если бы я раскомментировал эти два предупреждения выше, при выполнении этого кода я получил бы только одно предупреждение: «наблюдаю ...». Что-то происходит за 10 мс до первого звонка на watchInFlight
, что препятствует его вызову. ( РЕДАКТИРОВАТЬ: Я также использовал операторы регистрации вместо предупреждений о том же эффекте.)
Итак, мне нужен способ отследить поток JavaScript, чтобы увидеть, что блокирует первый вызов watchInFlight
. Хотя, если у вас есть решение вышеупомянутой проблемы, я также приму это.
Ограничения: Я не могу использовать другую библиотеку, если вы не можете заставить ее играть хорошо с Додзё 0.4.3 (Я думаю, что я просто немного рванул во рту ... Я шучу. Додзё всегда была хорошей библиотекой).
Любая помощь будет принята с благодарностью.