我目前正在尝试查看通过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()类似的事件,以避免浏览文档?

最佳答案

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

如果您像我一样,并且由于您的TWebbrowser没有直接嵌入到表单中而使用异步可插拔协议仍然遇到问题,那么我提出了一个新问题:
How can I find the ComServer for a TWebBrowser Asynchronous Pluggable Protocol

关于delphi - TWebBrowser中是否有与Chromium Embedded的OnResourceResponse等效的东西? (德尔福),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13026593/

10-12 02:27