Использование addProgressListener и onStatusChange для получения времени поиска DNS для страниц - PullRequest
1 голос
/ 07 апреля 2011

Я пытаюсь добавить функциональность в расширение Firefox, чтобы время, необходимое веб-странице для поиска DNS. Глядя на Firebug, я понял, что это можно сделать, добавив прослушиватель веб-прогресса в объект браузера и прослушивая события.

Сначала я регистрирую прослушиватель событий при загрузке страницы:

window.addEventListener("load", function(e) { myObj.onLoad(e); }, false);

Внутри myObj.onLoad () я регистрирую свой веб-слушатель прогресса следующим образом:

 gBrowser.addProgressListener(this, Components.interfaces.nsIWebProgress.NOTIFY_ALL);

Наконец, я реализую onStatusChange внутри myObj вместе с QueryInterface и другими:

onStatusChange: function(aWebProgress, aRequest, aStatus, aMessage) {
    this.logInfo("onStatusChange: " + aMessage + ". Time = " + (new Date().getTime()));
}

Однако, когда вызывается onStatusChange, aStatus всегда равен 0, даже если aMessage отображает правильное событие. Я часами пытался понять это. Есть идеи почему ??

Также кажется, что onStatusChange со статусом 'Ci.nsISocketTransport.STATUS_RESOLVING' вызывается только для некоторых компонентов, без вызова для других, даже если у них может быть другое доменное имя, которое необходимо преобразовать, и DNS имеет не был кэширован. Нужна помощь плз!

1 Ответ

0 голосов
/ 11 апреля 2011

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

...