0

我正在尝试自动提交表单,并保存在 TWebBrowser 对象中显示的结果图像。

图像通过几个链接的javascript请求 (ajax)加载,直到它最终出现在文档中。

获取此图像的最佳方法是什么?我想挂钩接收功能以便能够看到 http 响应(这基本上是我的形象)。

另一种可能性是从缓存/内存中加载图像......

我不知道如何实际执行此操作,希望有人可以提供帮助。

谢谢。

4

3 回答 3

1

您可以使用OnDocumentCompleteorOnNavigateComplete2事件(请参阅 SHDocVw 帮助)或等待WebBrowser位于 a 中ReadyState READYSTATE_COMPLETE,然后从WebBrowser.Document.

但您也可以(更简单的 IMO)使用 aTIdHTTP.Get直接获取响应流。

于 2010-09-01T23:12:32.300 回答
1

您可以使用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;
于 2010-09-01T23:27:11.833 回答
1

要使您的应用程序更具可扩展性,您可以直接尝试EmbeddedWB。它包装了 IWebBrowser2,使用起来非常方便。Embarcadero 在他们的 RADStudio 中使用 EmbeddedWB。

于 2010-09-02T00:53:10.660 回答