merhaba, web sayfasındaki belli bir alanı webbrowser içinde göstermeye çalışıyorum. Bu konu hakkında yardımcı olursanız sevinirim.
1) Yapmaya çalıştığım , facebooktaki, sadece sohbet kısmını ( sohbetteki arkadaş listesi kısmı ) webbrowser içinde göstermek istiyorum.
2) Yeni mesaj geldiğinde ayrı bir pencere açılıyor bunu yakalayıp ayrı pencerede gösterme şansım varmı.
konu hakkında html olarak epey aradım, fakat yeni pencereyi ajax ile oluşturduğu için pek birşey bulamadım.
teşekkürler
webbrowser sayfanın tamamı değil div alanı
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: webbrowser sayfanın tamamı değil div alanı
Merhaba..
1. Yapmak istediğin (konuşma bloğunu almak) için; vereceğin bir <div class="..." bloğunu takibe alan bir fonksiyon hazırladım.
Not: Adını FaceKonusma koydum ama bu sadece facebook'a özel değildir. Fonksiyon parametrelerinden de görebileceğiniz gibi HTML içinden seçerek vereceğiniz herhangi bir DIV Class tanımını takibe alır. Örneğimizde : Konusma = '<div class="conversation"';
// Yapılacak işlem strDIV parametresinde verileni bulursak, bulunan <DIV>'e konumlanmak
// sonra da alt <DIV Class oluşumlarını (+) / (-) yönde sayarak istediğimiz DIV'in
// yani tüm ana DIV bloğunu yakalamak.
Fonksiyonun içine açıklamaları ekledim.
// Kullanımı //
// Fonksiyon //
2. Belli aralıklar ile HTML içeriğini kontrol etmek ile sonuç alabileceğini değerlendiriyorum.
Ekleme :
// Conversation ID olarak DIV Class yanında id="u_0_p" şeklinde ifade var bunları da takip içine alırsan o zaman sadece o ID'li DIV bloğunu yakalarsın ..
Örneğin :
Başarılar. 
1. Yapmak istediğin (konuşma bloğunu almak) için; vereceğin bir <div class="..." bloğunu takibe alan bir fonksiyon hazırladım.
Not: Adını FaceKonusma koydum ama bu sadece facebook'a özel değildir. Fonksiyon parametrelerinden de görebileceğiniz gibi HTML içinden seçerek vereceğiniz herhangi bir DIV Class tanımını takibe alır. Örneğimizde : Konusma = '<div class="conversation"';
// Yapılacak işlem strDIV parametresinde verileni bulursak, bulunan <DIV>'e konumlanmak
// sonra da alt <DIV Class oluşumlarını (+) / (-) yönde sayarak istediğimiz DIV'in
// yani tüm ana DIV bloğunu yakalamak.
Fonksiyonun içine açıklamaları ekledim.
// Kullanımı //
Kod: Tümünü seç
procedure TForm1.BitBtn1Click(Sender: TObject);
Const
Konusma = '<div class="conversation"';
begin
Memo1.Lines.Text := FaceKonusma( Konusma, WebBrowser1.Oleobject.Document.Body.InnerHTML );
end;
Kod: Tümünü seç
Function FaceKonusma( strDIV, strIcerik:String ):String;
Var
strBlok, strUrun: String;
iDIVsay, iAc, iKapa: Integer;
begin
// Yapılacak işlem strDIV parametresinde verileni bulursak, bulunan <DIV>'e konumlanmak
// sonra da alt <DIV Class oluşumlarını (+) / (-) yönde sayarak istediğimiz DIV'in
// yani tüm ana DIV bloğunu yakalamak.
Result := '';
if Pos( strDIV, strIcerik ) <= 0 then EXIT;
strBlok := strIcerik;
System.Delete( strBlok, 1, Pos( strDIV, strBlok )-1 );
iDIVSay := 1; // bizim ana <DIV> bunu (0) olana kadar gidip gelicez...
strUrun := '';
// Başlıyoruz...
// Önce aradığımız ana strDIV'i ekleyip, strBloktakini imha ediyoruz. Ayağımıza dolaşmasın :)
strUrun := strUrun + Copy( strBlok, 1, Pos('strDIV', strBlok) + Length(strDIV)-1 );
System.Delete( strBlok, 1, Pos('strDIV', strBlok) + Length(strDIV)-1 );
while iDIVSay > 0 do
begin
iAc := Pos( '<DIV', UpperCase( strBlok ) );
iKapa := Pos( '</DIV>', UpperCase( strBlok ) );
// bir '<div' başlangıcı ve bir '</div' sonlandırıcı bulduk.
// Şimdi (iAc ve iKapa) hangi pozisyon büyük / küçük onu sorgulayarak
// aradığımız master <DIV> 'i kapsıyor mu onu öğrenicez...
if iAc < iKapa then
begin // kurallı bir blok ama bizim için yeterli değil...
strUrun := strUrun + Copy( strBlok, 1, iAc + 3 ); // en yakındaki = '<div'
System.Delete( strBlok, 1, iAc + 3 ); // yakındakine kadar (dahil) sil...
inc(iDIVSay); // bir iç blok ekledik...
end else
begin // kırık kural bulduk...
strUrun := strUrun + Copy( strBlok, 1, iKapa + 5 ); // en yakındaki = '</div'
System.Delete( strBlok, 1, iKapa + 5 ); // yakındakine kadar (dahil) sil...
dec(iDIVSay); // bir iç blok düştük...
end;
end; // while
Result := strUrun;
end;
Ekleme :

// Conversation ID olarak DIV Class yanında id="u_0_p" şeklinde ifade var bunları da takip içine alırsan o zaman sadece o ID'li DIV bloğunu yakalarsın ..
Örneğin :
Kod: Tümünü seç
Const
Konusma = '<div class="conversation" id="u_0_p"'; // Sadece "u_0_p" ait konuşmayı yakalarsın...

Re: webbrowser sayfanın tamamı değil div alanı
vallahi abi süpersin. hemen deniyorum. teşekkürler.