我正在尝试自动提交表单,并保存在TWebBrowser对象中显示的结果图像。
图片加载几个链式 javascript 请求(ajax),直到它最终出现在文档中。
获取此图片的最佳方式是什么? 我想到挂钩接收功能能够看到http响应(这基本上就是我的形象)。
另一种可能性是从缓存/内存中加载图像 ...
我不知道如何实际做到这一点,我希望有人可以提供帮助。
感谢。
答案 0 :(得分:1)
您可以使用OnDocumentComplete
或OnNavigateComplete2
事件(请参阅SHDocVw帮助)或等待WebBrowser
位于ReadyState READYSTATE_COMPLETE
,然后阅读{{ 1}}。
但您也可以(更简单的IMO)使用WebBrowser.Document
直接获取响应流。
答案 1 :(得分:1)
您可以使用IHTMLDocument2对象中的images属性检索所有网址图片。
使用OnDocumentComplete事件查看此示例。
procedure TForm2.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
var
HTMLDocument2: IHTMLDocument2;
i : Integer;
Item : IHTMLElement;
ImageUrl : string;
begin
HTMLDocument2 := (WebBrowser1.Document AS IHTMLDocument2);
for i := 0 to HTMLDocument2.images.length -1 do
begin
Item := HTMLDocument2.images.item(i, null) As IHTMLElement;
ImageUrl:=item.getAttribute('src',0);
//do your stuff with the url image retrieved
end;
end;
答案 2 :(得分:1)
为了使您的应用程序更具可扩展性,您可以直接尝试EmbeddedWB。它包装IWebBrowser2并且非常方便使用。 Embarcadero在他们的RADStudio中使用EmbeddedWB。