[Delphi] Webbrowser links _blank targets opsporen/wijzigen

Pagina: 1
Acties:
  • 100 views sinds 30-01-2008
  • Reageer

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Ik wil in een document dat is ingeladen in een WebBrowser component van alle links de target veranderen in _top wanneer het een _blank target betreft.

Om alle links af te lopen gebruik ik:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
var  Document:IHTMLDocument2;
begin
     Document := WebBrowser1.Document as IHTMLDocument2;

     with Document.links do begin
       for Index:=length-1 downto 0 do begin
         with item( '', Index ) as IHTMLLinkElement do begin
             // if ( target = '_blank' ) then target := '_top';
         end;
       end;
     end;
Probleem is dat de IHTMLLinkElement interface alleen de URL bevat en niet de target; de target wordt aangeboden via een IHTMLLinkElement2 interface. Weet iemand waar/hoe ik deze interface kan gebruiken? (Of een andere methode om alle targets te wijzigen?)

Developer Accused Of Unreadable Code Refuses To Comment


  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 05-05 14:48
In het OnBeforeNavigate2 event krijg je de var parameter TargetFrameName mee.

  • Icelus
  • Registratie: Januari 2004
  • Niet online
matthijsln schreef op maandag 20 juni 2005 @ 11:14:
In het OnBeforeNavigate2 event krijg je de var parameter TargetFrameName mee.
Dit event komt helaas niet door wanneer de target _blank is. Er wordt een apart (Internet Explorer) venster geopend waarin de pagina wordt geladen. OnBeforeNavigate2 wordt niet aangeroepen.

Developer Accused Of Unreadable Code Refuses To Comment


  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 05-05 14:48
Misschien kan je wat met het OnNewWindow2 event?

  • Icelus
  • Registratie: Januari 2004
  • Niet online
matthijsln schreef op maandag 20 juni 2005 @ 12:44:
Misschien kan je wat met het OnNewWindow2 event?
Hiermee is het inderdaad mogelijk om het openen voor te zijn. Ik wil echter nog wel de URL weten waar op geklikt werd (wordt niet meegegeven met OnNewWindow2).

Developer Accused Of Unreadable Code Refuses To Comment


  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 05-05 14:48
Er is wel een NewWindow3 met wel de URL als parameter zie ik in MSDN. Alleen is die niet beschikbaar in TWebBrowser (in Delphi 7), dus daar zal je wat op moeten verzinnen.

Nou heb ik mij bewust niet zoveel verdiept in ActiveX/COM, maar misschien kan je iets met TEventDispatcher ("Handling events in an Automation Controller" uit de Delphi help).

Zou je het nodig hebben, het dispid van NewWindow3 is 273. Meer wil ik er ook niet over weten ;)
Pagina: 1