如果可能的话,如何通过 XPCOM 获取网页上的所有图像?
图像可以在 HTML 中指定为某个 CSS 属性中的背景 url,在 img 标记内,或以 Web 开发人员可能包含的任何形式。
我尝试研究 imgIContainer、imgIDecodeObserver 和许多其他接口。尽管我们可以通过一种方式向 Mozilla 提供图像 URI,以便它加载图像、解码并返回 imgIContainer。但是我无论如何都找不到获取当前网页中的所有图像。
这必须在 Java 或 Javascript 中完成。
有什么建议么?
@Wladimir - 感谢您的帮助。
我想要所有图像,包括 CSS 结构(背景图像)。所以现在我正在监听来自 nsIWebProgressListener 的事件。
onStateChange: function(webProgress, request, stateFlags, status) {
if ((~stateFlags & (nsIWebProgressListener.STATE_IS_REQUEST | nsIWebProgressListener.STATE_STOP)) == 0) {
var imgReq = request.QueryInterface(CI.imgIRequest);
if (imgReq)
var img = imgReq.image;
}
}
问题是request.QueryInterface(CI.imgIRequest)
所有非图像请求都会引发异常。尽管可以通过将代码放在 try-catch 块中来忽略这些异常,但我更喜欢干净利落地做事。
是否有任何条件可以检查以了解请求是否为图像?