javascript - 使用addProgressListener和onStatusChange获取页面的DNS查找时间

标签 javascript firefox-addon xpcom

我正在尝试向 Firefox 扩展添加功能,以计算网页执行 DNS 查找所需的时间。看看 Firebug,我认为可以通过向浏览器对象添加 Web 进度监听器并监听事件来实现此目的。

首先,我在加载页面时注册一个事件监听器:

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

在 myObj.onLoad() 内部,我注册了我的网络进度监听器,如下所示:

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

最后,我在 myObj 中实现了“onStatusChange”,以及 QueryInterface 等:

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

但是,当调用 onStatusChange 时,即使 aMessage 显示正确的事件,aStatus 也始终为 0。我花了几个小时试图弄清楚这一点。有什么想法吗??

此外,状态为“Ci.nsISocketTransport.STATUS_RESOLVING”的 onStatusChange 似乎仅在某些组件上被调用,而不会被其他组件调用,即使它们可能具有需要转换的不同域名并且 DNS 已没有被缓存。需要帮助请!

最佳答案

如果将进度监听器附加到选项卡式浏览器,您只能获得进度事件的过滤 View 。您可能会发现需要将进度监听器附加到内部浏览器。 (如果您想观看多个选项卡/窗口,您可能会发现最好将进度监听器附加到窗口本身,或者对于服务,附加到根文档加载器。)

关于javascript - 使用addProgressListener和onStatusChange获取页面的DNS查找时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5575280/

相关文章:

c++ - 使用 C++ 开发 Thunderbird 扩展

javascript - Firefox XPCOM 有 JSDoc 文件吗?

javascript - Firefox 扩展和 COM 组件之间的 IPC

javascript - 无法使用 firefox 扩展将本地 css 文件注入(inject)网页

javascript - 使用替换后 appendChild() 将不起作用

javascript - 根据类(class)自定义字段在类(class)页面上添加链接

javascript - 如何在 AngularJS 中有条件地应用指令?

firefox - 如何使用 Firefox 插件执行外部应用程序?

javascript - 如何在 javascript 中显示全屏弹出窗口?

javascript - 基本 Javascript/jQuery 数学游戏 : Why can't I evaluate the second time I run this function?