我正在尝试自动提交表单,并保存在 TWebBrowser 对象中显示的结果图像。
图像通过几个链接的javascript请求 (ajax)加载,直到它最终出现在文档中。
获取此图像的最佳方法是什么?我想挂钩接收功能以便能够看到 http 响应(这基本上是我的形象)。
另一种可能性是从缓存/内存中加载图像......
我不知道如何实际执行此操作,希望有人可以提供帮助。
谢谢。
我正在尝试自动提交表单,并保存在 TWebBrowser 对象中显示的结果图像。
图像通过几个链接的javascript请求 (ajax)加载,直到它最终出现在文档中。
获取此图像的最佳方法是什么?我想挂钩接收功能以便能够看到 http 响应(这基本上是我的形象)。
另一种可能性是从缓存/内存中加载图像......
我不知道如何实际执行此操作,希望有人可以提供帮助。
谢谢。
您可以使用OnDocumentComplete
orOnNavigateComplete2
事件(请参阅 SHDocVw 帮助)或等待WebBrowser
位于 a 中ReadyState READYSTATE_COMPLETE
,然后从WebBrowser.Document
.
但您也可以(更简单的 IMO)使用 aTIdHTTP.Get
直接获取响应流。
您可以使用IHTMLDocument2 对象中的images属性检索所有 url 图像。
使用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;
要使您的应用程序更具可扩展性,您可以直接尝试EmbeddedWB。它包装了 IWebBrowser2,使用起来非常方便。Embarcadero 在他们的 RADStudio 中使用 EmbeddedWB。