Hanki hyperlinkin URL-osoite TWebBrowser-asiakirjassa

click fraud protection

Useimmissa tilanteissa käytät TWebBrowseria HTML-asiakirjojen näyttämiseen käyttäjälle - luomalla siten oman version (Internet Explorer) -selaimesta. Huomaa, että TWebBrowser voi näyttää myös esimerkiksi Word-asiakirjoja.

Erittäin mukava selaimen ominaisuus on näyttää linkkitiedot esimerkiksi tilarivillä, kun hiiri siirtää hiiren osoittimen linkin päälle asiakirjassa.

TWebBrowser ei paljasta tapahtumaa, kuten "OnMouseMove". Vaikka tällaista tapahtumaa olisi, se vapautetaan TWebBrowser-komponentille - EI, jos asiakirja näytetään TWebBrowserissa.

Jotta voitaisiin antaa tällaisia ​​tietoja (ja paljon muuta, kuten näet hetkessä) Delphi-sovelluksessasi käyttämällä TWebBrowser-komponenttia, tekniikkaa nimeltä "tapahtumien uppoaminen"on toteutettava.

Siirtyminen verkkosivulle TWebBrowser-komponentin avulla, johon soitat Navigoida menetelmä. Asiakirja omaisuus TWebBrowser palauttaa IHTMLDocument2 arvo (web-asiakirjoille). Tätä käyttöliittymää käytetään asiakirjan tietojen noutamiseen, asiakirjan HTML-elementtien ja tekstin tutkimiseen ja muokkaamiseen sekä niihin liittyvien tapahtumien käsittelemiseen.

instagram viewer

Jotta "a" -tagin "href" -attribuutti (linkki) saadaan asiakirjan sisällä hiiren osoittaessa asiakirjan päälle, sinun on reagoitava IHTMLDocument2: n "onmousemove" -tapahtumaan.

Koska olemme kiinnostuneita A-elementin HREF-määritteestä - hiirin ohitetun linkin URL-osoitteen näyttämiseksi upotamme "onmousemove" -tapahtuman.

Kuten edellä selitettiin, liitämme dokumentin onmousemove-tapahtumaan TWebBrowserin OnDocumentComplete-tapahtumassa:

yksikkö Kappale 1;
käyttöliittymä
käyttötarkoitukset
Windows, Viestit, SysUtils, Variantit, Luokat, Grafiikka, Ohjaimet, Lomakkeet,
Dialogit, OleCtrls, SHDocVw, MSHTML, ActiveX, StdCtrls;
tyyppi
TObjectProcedure = menettelyofesine;
TEventObject = luokka(TInterfacedObject, IDispatch)
yksityinen
FOnEvent: TObjectPocedure;
suojattu
toimia GetTypeInfoCount (lopullinen määrä: kokonaisluku): HResult; stdcall;
toimia GetTypeInfo (Hakemisto, LocaleID: Kokonaisluku; out TypeInfo): HResult; stdcall;
toimia GetIDsOfNames (const IID: TGUID; Nimet: Osoitin; NameCount, LocaleID: kokonaisluku; DispID: osoitin): HResult; stdcall;
toimia Kutsu (DispID: kokonaisluku; const IID: TGUID; LocaleID: kokonaisluku; Liput: Word; var parametrien; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
julkinen
rakentaja Luoda(const OnEvent: TObjectProcedure);
omaisuus OnEvent: TObjectProcedure lue FOnEvent kirjoita FOnEvent;
pää;
TForm1 = luokka(TForm)
WebBrowser1: TWebBrowser;
elementInfo: TMemo;
menettely WebBrowser1BeforeNavigate2 (ASender: TObject; const pDisp: IDispatch; var URL, liput, TargetFrameName, PostData, otsikot: OleVariant; var Peruuta: WordBool);
menettely WebBrowser1DocumentComplete (ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
menettely FormCreate (Lähettäjä: TObject);
yksityinen
menettely Document_OnMouseOver;
julkinen
{ Julkinen ilmoitukset}
pää;
var
Muoto 1: TForm1;
htmlDoc: IHTMLDocument2;
toteutus
{$ R * .dfm}
menettely TForm1.Document_OnMouseOver;
var
elementti: IHTMLElement;
alkaa
jos htmlDoc = nollasitten exit;
elementti: = htmlDoc.parentWindow.event.srcElement;
elementInfo. Asia selvä;
jos LowerCase (element.tagName) = 'a' sitten
alkaa
elementInfo. Linjat. Lisää ('LINK-info ...');
elementInfo. Linjat. Lisää (Muoto ('HREF:% s', [element.getAttribute ('href', 0)])));
pää
muujos LowerCase (element.tagName) = 'img' sitten
alkaa
elementInfo. Linjat. Lisää ('KUVATiedot ...');
elementInfo. Linjat. Lisää (Muoto ('SRC:% s', [element.getAttribute ('src', 0)])));
pää
muu
alkaa
elementInfo. Linjat. Lisää (Muoto ('TAG:% s', [element.tagName]));
pää;
pää; (* Document_OnMouseOver *)
menettely TForm1.FormCreate (Lähettäjä: TObject);
alkaa
WebBrowser1.Navigate (' http://delphi.about.com') ;
elementInfo. Asia selvä;
elementInfo. Linjat. Lisää ('Siirrä hiiri asiakirjan päälle ...');
pää; (* FormCreate *)
menettely TForm1.WebBrowser1BeforeNavigate2 (ASender: TObject; const pDisp: IDispatch; var URL, liput, TargetFrameName, PostData, otsikot: OleVariant; var Peruuta: WordBool);
alkaa
htmlDoc: = nolla;
pää; (* WebBrowser1BeforeNavigate2 *)
menettely TForm1.WebBrowser1DocumentComplete (ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
alkaa
jos Määritetty (WebBrowser1.Document) sitten
alkaa
htmlDoc: = WebBrowser1.Document kuten IHTMLDocument2;
htmlDoc.onmouseover: = (TEventObject. Luo (Document_OnMouseOver) kuten IDispatch);
pää;
pää; (* WebBrowser1DocumentComplete *)
{TEventObject}
rakentaja TEventObject. Luoda(const OnEvent: TObjectProcedure);
alkaa
peritty Luoda;
FOnEvent: = OnEvent;
pää;
toimia TEventObject. GetIDsOfNames (const IID: TGUID; Nimet: Osoitin; NameCount, LocaleID: kokonaisluku; DispID: osoitin): HResult;
alkaa
Tulos: = E_NOTIMPL;
pää;
toimia TEventObject. GetTypeInfo (Hakemisto, LocaleID: Kokonaisluku; out TypeInfo): HResult;
alkaa
Tulos: = E_NOTIMPL;
pää;
toimia TEventObject. GetTypeInfoCount (lopullinen määrä: kokonaisluku): HResult;
alkaa
Tulos: = E_NOTIMPL;
pää;
toimia TEventObject. Kutsu (DispID: kokonaisluku; const IID: TGUID; LocaleID: kokonaisluku; Liput: Word; var parametrien; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
alkaa
jos (DispID = DISPID_VALUE) sitten
alkaa
jos Määritetty (FOnEvent) sitten FOnEvent;
Tulos: = S_OK;
pää
muu Tulos: = E_NOTIMPL;
pää;
pää.

instagram story viewer