2013-10-29 46 views
0

我需要检测何时一个网页及其所有内容和嵌入的URL,图像,音频,视频等完全下载。我调试了文件docshell/base/nsDocShell.cpp - > nsDocShell :: LoadURI()。它清楚地表明页面加载完成,但唯一的问题是我仍然可以看到正在进行页面下载,而上面的API表示页面下载结束。有人可以帮助解决这个问题,我正在寻找/挖掘错误的位置?我不必编写AddOn或Extension,但只需挖掘基本源代码并获取信息即可。Firefox C++源代码帮助检测页面内容的下载

感谢,SKM

回答

0

那么,有没有单数 “全部下载” 状态。在下载完“全部”之后,解析器可能仍处于活动状态,由于会分析更多图像标记和脚本标记,因此会导致更多下载,等等。解析器甚至可能暂停,例如,当遇到同步脚本标签时。

最近的“所有任务完成”的状态很可能当document.readyState设置为"complete"load/error事件的文件被分派。 发生这种情况(IIRC)nsDocumentViewer::LoadComplete

即使由于脚本插入新标签,CSS规则被触发,XMLHttpRequests等等,可能会加载更多的外部资源。现代网站因为这个原因从未完全加载。

+0

但是,即使没有提供任何URL加载,即使对于空白页也与浏览器本身一起调用,nsDocumentViewer :: LoadComplete()也会被调用。你能告诉我如何确保页面加载结束只能检测给定的URL。 – skm

+0

我对代码不太熟悉,但是每个查看器都有一个关联的文档,这个文档又有一个关联的uri /位置。浏览类似'mDocument && uri = mDocument-> GetDocumentURI()'和比较'uri'(nsIURI)的代码应该使您能够比较URI并且只有当uri匹配某些内容时才运行进一步的代码。 – nmaier