Я пытаюсь добавить функциональность в расширение 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 имеет не был кэширован. Нужна помощь плз!