2

我目前正在尝试在加载时查看通过 Res://imagename 加载的图像。在带有 res 处理程序的 Chromium 中,我已经能够通过 ResourceResponse 事件做到这一点,但是,据我所知,TWebBrowser 没有类似的功能。

我已经能够锁定 OnDocumentComplete 函数,并且能够实现一种非常低效的方式,一旦创建了整个 HTML 文档就可以查看它......

procedure TNotesBrowser.TBrowserDocumentComplete(ASender: TObject; const pDisp:   IDispatch; var URL: OleVariant);
var
    HTMLDocument2: IHTMLDocument2;
    i            : Integer;
    Item         : IHTMLElement;
    ImageUrl     : string;
begin
    HTMLDocument2 := ((FBrowser as TWebBrowser).Document AS IHTMLDocument2);
    if HTMLDocument2 <> nil then
    begin
        for i := 0 to HTMLDocument2.images.length -1 do
        begin
        Item := HTMLDocument2.images.item(i, 'null') As IHTMLElement;
        ImageUrl:=item.getAttribute('src',0);

        if ContainsText(ImageURL,'ImageName') then
            if Assigned(FCCICONLoaded) then
                { Trigger Event }
                FCCICONLoaded(self);
        end;
    end;
end;

然而,这是一个相当漫长的过程。那么有没有其他人发现一个类似于 Chromium 的 OnResourceResponse() 的事件来避免查看文档?

4

1 回答 1

1

通过大量研究,我找到了使用异步可插入协议解决此问题的方法,但到目前为止,它仅适用于将 TWebBrowser 直接嵌入到表单中的单个表单应用程序。此解决方案的源代码可在此处找到http://www.jasontpenny.com/blog/2010/03/23/custom-protocol-handler-in-delphi/

如果您像我一样,并且由于您的 TWebbrowser 没有直接嵌入到表单中而在使用异步可插入协议时仍然存在问题,那么我提出了一个新问题: 如何找到用于 TWebBrowser 异步可插入协议的 ComServer

于 2012-10-24T14:53:40.543 回答