Czarna strona WebBrowsera - OleObject i te sprawy.
Przedstawię wam najpotrzebniejsze funkcje WebBrowser-a. Oto one:

Aby pobrać kod HTML wystarczy jedna linika kodu:

 
function GetHtml(WebBrowser : TWebBrowser) : String;
begin
Result:=WebBrowser.OleObject.Document.documentElement.innerHTML;
end;
 


Możemy również pobrać sam tekst, bez znaczników HTML:

 
function GetText(WebBrowser : TWebBrowser) : String;
begin
Result:=WebBrowser.OleObject.Document.documentElement.innerText;
end;
 


Pobranie wszystkich adresów obrazków ze strony:

 
function  GetImages(WebBrowser : TWebBrowser) : String;
var  a : Integer;
       s : String;
begin
for a := 0 to WebBrowser.OleObject.Document.Images.Length-1 do
s:=s+(WebBrowser.OleObject.Document.Images.Item(a).Src)+#13;
Result:=s;
end;
 


Aby pobrać wielkość strony w bajtach:

 
function  GetSize(WebBrowser : TWebBrowser) : Integer;
begin
Result:=StrToInt((WebBrowser.Document as IHTMLDocument2).FileSize);
end;
 


Aby pobrać wszystkie linki ze strony:

 
function  GetLinks(WebBrowser : TWebBrowser) : String;
var s : String;
     a : Integer;
begin
for a := 0 to WebBrowser.OleObject.Document.Links.Length-1 do
s:=s+(WebBrowser.OleObject.Document.Links.Item(a).href)+#13;
Result:=s;
end;
 


Funkcja do pobrania protokołu:

 
function GetProtocol(WebBrowser : TWebBrowser) : String;
begin
result:=WebBrowser.OleObject.Document.Location.Protocol;
end;
 


Funkcja do pobierania jakie cookies wysyła nam strona:

 
function GetCookies(WebBrowser : TWebBrowser) : String;
var
  documentt: IHTMLDocument2;
  cookies: String;
begin
 documentt := WebBrowser.Document as IHTMLDocument2;
  if Assigned(documentt) then
    cookies := documentt.cookie;
    Result:=cookies;
end;
 


Funkcja do pobierania adresów wszystkich ramek:

 
function  GetFrames(WebBrowser : TWebBrowser) : String;
var s : String;
    a : Integer;
begin
for a := 0 to WebBrowser.OleObject.Document.Frames.Length-1 do
s:=s+(WebBrowser.OleObject.Document.Frames.Item(a).Document.URL)+#13;
Result:=s;
end;
 


Funkcja, która zwraca nam adres aktualnej strony:
Edit1.Text:= WebBrowser1.LocationURL;


Aby powyższe funkcje działały strona musi być całkowicie załadowana !!(OnDocumentComplete)
Do działania niektórych funkcji wymagany jest moduł MSHTML!!

Życzę miłej i bezproblemowej współpracy z WebBrowser-em ;)

Kategoria: Delphi » Artykuły

30 komentarzy

Avatar: siekierzyński
Napisany 2008-08-29 19:37 przez siekierzyński

Weź dodaj kod na modyfikacje span w wyświetlonej stronie

Avatar: _13th_Dragon
Napisany 2008-06-19 14:31 przez _13th_Dragon

sasser.64, może podaj gdzie da się ściągnąć Mozilla Controle?

Avatar: xc1024
Napisany 2008-06-17 20:54 przez xc1024

Tommalla - jak chcesz alternatywy to proponuje Mozilla Control. mam i nie narzekam, a nawet sie ciesze ze z dziurawego ie nie korzystam.

Avatar: Coldpeer
Napisany 2006-07-23 23:04 przez Coldpeer

migajek: target="_top" otwiera w obecnym oknie - do nowego okna służy target="_blank" (ale zdaje się to była tylko pomyłka) ;]

Avatar: migajek
Napisany 2006-06-18 16:13 przez migajek

Tomalla: lol :D i myslisz ze jeszcze ktos by ci dal za darmo? :) w sumie jest jeden taki http://pbear.com/htmlviewers.html, komercyjna wersja obsluguje nawet wiekszosc CSSow, ale brak w nim JS (co mozna stosunkowo latwo nadrobic integrujac go z SpiderMonkey :D )

Brak avatara
Napisany 2006-05-06 20:47 przez Tommalla

Jakby ktos zrobil engine wlasny(cos innego niz spakowane badzIEwIE), to bylbym wdzieczny, gdyz sam na VCL, mimo prob, zadnego komponentu napisac nie potrafie ;(

Avatar: FALCO
Napisany 2006-02-13 20:46 przez FALCO

a przepraszam ja was bardzo ale jak ustawić żeby toto kożystało ze StatusBar?
I jak wyłapywać te teksty bo chciałbym to w logu (co się ściąga jak odwiedzam strony i wogóle wszystkie te teksty)

Brak avatara
Napisany 2006-01-01 15:22 przez Gargamel12

Świetny artykuł!!!!
Tego potrzebowałem!!!!

Avatar: mike_p
Napisany 2005-05-08 12:52 przez mike_p

zamiast tego blokokowania nowych okien przez cancel proponuję
procedure TMDIChild.WebBrowser1NewWindow2(Sender:TObject; var ppDisp: IDispatch; var Cancel: WordBool)
var
NewWindow:TMDIChild;
begin
NewWindow:=TMDIChild.Create(self);
NewWindow.Show;
ppDisp:=NewWindow.WebBrowser1.DefaultDispatch;
end;
a następnie sprawdzić, czy podczas OnBeforeNavigate lub OnDocumentComplete następuje NewWindow2, i wtedy dać Cancel:=True ;)

Avatar: gamecreator
Napisany 2005-02-10 21:03 przez gamecreator

Wszystko pięknie ładnie, tylko że jest jedno ale.. :)
ten WebBrowser to nic innego jak opakowana kontrolka Internet Explorera :P A wszyscy wiedzą jaka z niego gówniana przeglądarka jest ;) Ta kontrolka da tylko takie możliwości, jakie może dać IE, i będzie tak samo podatna na wirusy, hacking, dialery i inne śmieci. Jak już ktoś chce pisać przeglądarkę, to raczej chyba lepiej całkiem od zera.

Avatar: migajek
Napisany 2004-11-07 18:23 przez migajek

Blokowanie pop-up: Znajdź zdarzenie onNewWindow2, kliknij dwa razy w pustym polu obok, i w nowej procedurze (np. WebBrowser1NewWindow2) wpisz cancel:=true;

To (chyba) zablokuje tworzenie wszystkich nowych okien, wiec jak na stronie bedzie np. <A HREF="someadres" TARGET="_top" ... > (już wyjaśniam jak ktoś HTML nie zna: TARGET="_top" oznacza żeby dokument w nowym oknie ladowac) to to też chyba zablokuje...

Avatar: Waldi
Napisany 2004-09-14 18:16 przez Waldi

a jak zablokowac kominikaty o informujące o błędach w skryptach i jak zablokowac popupy

Avatar: fleming86
Napisany 2004-08-31 17:34 przez fleming86

A jak pobrać datę modyfikacji strony ?

Brak avatara
Napisany 2004-06-10 18:31 przez marrek13

Thx za pomoc:)

Brak avatara
Napisany 2004-06-10 15:02 przez Snowak

np. edit1.text := GetCookies(Nazwa_WebBrowsera);

Brak avatara
Napisany 2004-06-02 21:47 przez marrek13

Jestem baardzo początkujący i chciałbym się dowiedzieć, jak wywołać funkcję GetCookies??

Brak avatara
Napisany 2004-05-24 16:15 przez Snowak

Thx, ciekawe, daje 5. Calkiem przydatne, rozwiazalo mi to jeden powazny problem

Brak avatara
Napisany 2004-05-21 11:41 przez tomksoft

hmmm. no co zrobić, narazie tylko Delphi sie zajmuje, ale jak masz coś ala WebBrowser w innym języku to też powinno działać.

Avatar: mcbury
Napisany 2004-05-21 08:18 przez mcbury

tomksoft fajny art tylko szkoda ze w Delphi:-(

Avatar: Kaczor
Napisany 2004-05-20 18:08 przez Kaczor

hehhe...podoba mi się....5

Brak avatara
Napisany 2004-05-20 13:31 przez tomksoft

mi jednak jest łatwiej na string-u, bo raz musze wciepnąć TStringList, a raz do TStrings,a tak tylko przypisuję zmienną Text.

Avatar: Drajwer
Napisany 2004-05-20 08:33 przez Drajwer

haha nazwy obrazkow w stringu:P stringlist wez w result

Brak avatara
Napisany 2004-05-19 17:04 przez tomksoft

co dorwać??

Avatar: angel2953
Napisany 2004-05-19 16:51 przez angel2953

hmm... Ciekawe skąd można dorwać wszystkie??

Brak avatara
Napisany 2004-05-19 15:40 przez tomksoft

Przepraszam bardzo, ale zapomniałem o najważniejszym - cookies, ale już zmodyfikowałem.

Avatar: CooBek
Napisany 2004-05-19 15:35 przez CooBek

bardzo dobrze, dostatecznie ;-) Stawiam 6 :-D

Brak avatara
Napisany 2004-05-19 15:00 przez jusa

ja dałem 6 :D

Brak avatara
Napisany 2004-05-19 15:00 przez tomksoft

wiem, ale normalnie to strasznie ciężko znaleźć...

Brak avatara
Napisany 2004-05-19 14:59 przez jusa

No z czymś takim to można przeglądarkę z prawdziwego zderzenia, zrobić!

Brak avatara
Napisany 2004-05-19 14:58 przez tomksoft

Oceniajcie! to mój pierwszy art ;)

4programmers.net