Iegūstiet hipersaites URL TWebBrowser dokumentā

Vairumā gadījumu jūs izmantojat TWebBrowser, lai lietotājam parādītu HTML dokumentus - tādējādi izveidojot savu (Internet Explorer) Web pārlūka versiju. Ņemiet vērā, ka, piemēram, TWebBrowser var parādīt arī Word dokumentus.

Ļoti jauka pārlūka īpašība ir saites informācijas parādīšana, piemēram, statusa joslā, kad pele virzās virs saites dokumentā.

TWebBrowser neatklāj tādu notikumu kā “OnMouseMove”. Pat ja šāds notikums pastāvētu, tas tiktu atlaists par komponentu TWebBrowser - NAV, ja dokuments tiktu parādīts TWebBrowser iekšpusē.

Lai sniegtu šādu informāciju (un daudz ko citu, kā jūs redzēsit pēc brīža) savā Delphi lietojumprogrammā, izmantojot TWebBrowser komponentu, metodi, ko sauc par "notikumi grimst"jāīsteno.

Lai pārietu uz Web lapu, izmantojot TWebBrowser komponentu, uz kuru jūs zvanāt Virzīties metode. Dokuments TWebBrowser īpašums atgriež IHTMLDocument2 vērtība (tīmekļa dokumentiem). Šo saskarni izmanto, lai iegūtu informāciju par dokumentu, pārbaudītu un modificētu HTML elementus un tekstu dokumentā, kā arī apstrādātu saistītos notikumus.

instagram viewer

Lai dokumentā iegūtu tagu "a" atribūtu (saiti) "href" (saite), kamēr pele virzās virs dokumenta, jums jāreaģē uz IHTMLDocument2 "onmousemove" notikumu.

Tā kā mūs interesē A elementa HREF atribūts - lai parādītu peles saites URL, mēs ieslēgsim notikumu “onmousemove”.

Kā paskaidrots iepriekš, mēs pievienojam dokumenta onmousemove notikumam TWebBrowser OnDocumentComplete notikumā:

vienība Vienība 1;
saskarne
izmanto
Windows, Ziņojumi, SysUtils, Varianti, Klases, Grafika, Kontrolierīces, Veidlapas,
Dialogi, OleCtrls, SHDocVw, MSHTML, ActiveX, StdCtrls;
tips
TObjectProcedure = procedūranoobjekts;
TEventObject = klase(TInterfacedObject, IDispatch)
Privāts
FOnEvent: TObjectProcedure;
aizsargāts
funkcija GetTypeInfoCount (skaits: vesels skaitlis): HResult; stdcall;
funkcija GetTypeInfo (indekss, LocaleID: vesels skaitlis; ārpus TypeInfo): HResult; stdcall;
funkcija GetIDsOfNames (const IID: TGUID; Vārdi: rādītājs; NameCount, LocaleID: vesels skaitlis; DispID: rādītājs): HResult; stdcall;
funkcija Izsaukt (DispID: vesels skaitlis; const IID: TGUID; LocaleID: vesels skaitlis; Karogi: Vārds; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
publiski
konstruktors Izveidot (const OnEvent: TObjectProcedure);
īpašums OnEvent: TObjectProcedure lasīt FOnEvent rakstīt FOnEvent;
beigas;
TForm1 = klase(TForm)
WebBrowser1: TWebBrowser;
elementInfo: TMemo;
procedūra WebBrowser1BeforeNavigate2 (ASender: TObject; const pDisp: IDispatch; var URL, karodziņi, TargetFrameName, PostData, galvenes: OleVariant; var Atcelt: WordBool);
procedūra WebBrowser1DocumentComplete (ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
procedūra FormCreate (Sūtītājs: TObject);
Privāts
procedūra Document_OnMouseOver;
publiski
{ Publisks deklarācijas}
beigas;
var
1. forma: TForm1;
htmlDoc: IHTMLDocument2;
ieviešana
{$ R * .dfm}
procedūra TForm1.Document_OnMouseOver;
var
elements: IHTMLElement;
sākt
ja htmlDoc = nulletad Izeja;
elements: = htmlDoc.parentWindow.event.srcElement;
elementsInfo. Skaidrs;
ja LowerCase (element.tagName) = 'a' tad
sākt
elementsInfo. Līnijas. Pievienot ('LINK info ...');
elementsInfo. Līnijas. Pievienot (formatēt ('HREF:% s', [element.getAttribute ('href', 0)])));
beigas
citsja LowerCase (element.tagName) = 'img' tad
sākt
elementsInfo. Līnijas. Pievienot ('IMAGE info ...');
elementsInfo. Līnijas. Pievienot (formatēt ('SRC:% s', [elements.getAttribute ('src', 0)])));
beigas
cits
sākt
elementsInfo. Līnijas. Pievienot (formatēt ('TAG:% s', [elements.tagName]));
beigas;
beigas; (* Document_OnMouseOver *)
procedūra TForm1.FormCreate (Sūtītājs: TObject);
sākt
WebBrowser1.Navigate (' http://delphi.about.com') ;
elementsInfo. Skaidrs;
elementsInfo. Līnijas. Pievienot ('Pārvietot peli virs dokumenta ...');
beigas; (* FormCreate *)
procedūra TForm1.WebBrowser1BeforeNavigate2 (ASender: TObject; const pDisp: IDispatch; var URL, karodziņi, TargetFrameName, PostData, galvenes: OleVariant; var Atcelt: WordBool);
sākt
htmlDoc: = nulle;
beigas; (* WebBrowser1BeforeNavigate2 *)
procedūra TForm1.WebBrowser1DocumentComplete (ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
sākt
ja Piešķirts (WebBrowser1.Document) tad
sākt
htmlDoc: = WebBrowser1.Document IHTMLDocument2;
htmlDoc.onmouseover: = (TEventObject. Izveidot (Document_OnMouseOver) IDispatch);
beigas;
beigas; (* WebBrowser1DocumentComplete *)
{TEventObject}
konstruktors TEventObject. Izveidot (const OnEvent: TObjectProcedure);
sākt
mantots Izveidot;
FOnEvent: = OnEvent;
beigas;
funkcija TEventObject. GetIDsOfNames (const IID: TGUID; Vārdi: rādītājs; NameCount, LocaleID: vesels skaitlis; DispID: rādītājs): HResult;
sākt
Rezultāts: = E_NOTIMPL;
beigas;
funkcija TEventObject. GetTypeInfo (indekss, LocaleID: vesels skaitlis; ārpus TypeInfo): HResult;
sākt
Rezultāts: = E_NOTIMPL;
beigas;
funkcija TEventObject. GetTypeInfoCount (skaits: vesels skaitlis): HResult;
sākt
Rezultāts: = E_NOTIMPL;
beigas;
funkcija TEventObject. Izsaukt (DispID: vesels skaitlis; const IID: TGUID; LocaleID: vesels skaitlis; Karogi: Vārds; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
sākt
ja (DispID = DISPID_VALUE) tad
sākt
ja Piešķirts (FOnEvent) tad FOnEvent;
Rezultāts: = S_OK;
beigas
cits Rezultāts: = E_NOTIMPL;
beigas;
beigas.