TWebBrowser ve ajax

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
oklawa
Üye
Mesajlar: 68
Kayıt: 01 Oca 2008 02:53

TWebBrowser ve ajax

Mesaj gönderen oklawa »

Merhabalar.

Sayfadaki bir DIV elementinin içeriği ajax ile değişmekte.
İçerik ise grafikler ve JavaScript tooltipleri.

Birinci sorunum ajax işlemleri sonucunu almak için TWebBrowser'in hangi eventini kullanmam gerektiği.
ondocumentcomplete kullanılamıyor, ondownloadcomplete kullanıyorum, tabiki istediğim sonucu almak daha da karmaşıklaşıyor.

IHTMLElement bir onafterupdate eventine sahip, bunu kullanabilirmiyim? Aramalarımda bununla ilgili yeterli bir örnek bulamadım.

Ajax işlemi sonucunda hedef DIV elementinin içeriğini kontrol ediyorum,
içerdiği SPAN elementlerinin değiştiğini görüyor ve yeni bilgileri kolayca alıyorum ama aynı zamanda JavaScriptlerdeki değişmeleri alamıyorum.
Browser'de tooltipler değişiyor ama ben dökümanın kaynağına baktığımda hiç bir değişiklik belirleyemiyorum.

Referans link veya örnek verebilecek arkadaşlara teşekkür ederim.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: TWebBrowser ve ajax

Mesaj gönderen mrmarman »

Daha önce buna ilişkin bir cevap yazmıştım.
@mrmarman [url=http://www.delphiturkiye.com/forum/viewtopic.php?f=2&t=26385&p=148095&hilit=xislemtamam#p148095]bu tıklayacağınız[/url] linkte şöyle yazdı:Merhaba...

READYSTATE_COMPLETE olması sadece WebBrowser.Navigate komutuyla oluyor arkadaşlar. Gelen bir Web sayfasının içeriğini doldurduktan sonra web butonuna vs. click yapıyorsanız işe yaramıyor. Bu durumda OnDocumentComplete olayına başvuracaksınız. Daha önce tanımladığınız global bir değişkene ( örneğin değişkenimiz xIslemTamam:Boolean; olsun ) şöyle yazın.

Kod: Tümünü seç

procedure TForm1.EmbeddedWB1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  xIslemTamam := ( Pos('blank', URL) <= 0 ) ;
end;
Sonra da Button'a click yaptırdığınız yerdeki kodu şöyle yazın.

Kod: Tümünü seç

  xIslemTamam := False;
  while NOT xIslemTamam do Application.ProcessMessages;
Bu döngü işinizi görecektir. Ben şimdi sonsuz döngüye çanak tuttum. Örnek olsun diye kısa tuttum. Bir de xIptal gibi bir global değişken tutun ve bunu da While kriterine dahil edin. herhangi bir yerde iptal butonuna vs. basılırsa xIptal değerini True yapar kullanıcının döngüden çıkabilmesini sağlarsınız.

Başarılar dilerim.
Resim
Resim ....Resim
oklawa
Üye
Mesajlar: 68
Kayıt: 01 Oca 2008 02:53

Re: TWebBrowser ve ajax

Mesaj gönderen oklawa »

İlginize teşekkürler ama sanırım farklı konulardan bahsediyoruz.

Ajax ile sayfada bir bölüm güncellenirken ondocumentcomplete hiç tetiklenmiyor.
Sayfa ilk yüklendiğinde bir kez çağrılıyor o kadar.

Bende mecburen ondownloadcomplete eventini kullanıyorum.
Yine de sayfanın html içeriği büyük bir oranda sayfa ilk yüklendiği şekliyle kalıyor.
Browser'da yeni halini kullanırken, kaynak kodunda ilk yüklendiği halini görüyorsunuz.

MSHTML'nin sayfanın güncellendiğinden, içerisinde birşeylerin değiştiğinden hiç haberi yok sanki..
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: TWebBrowser ve ajax

Mesaj gönderen Lord_Ares »

bu konuya çözümü olan varmı arkadaşlar.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: TWebBrowser ve ajax

Mesaj gönderen mkysoft »

Aynı sorun IE'dede var. Ajaxlı sayfalarda kodu göster dediğinizde ilk halini gösteriyor. Bence ajax'ın çağırdığı sayfayı bularak siz browserda direk çağırın.
Cevapla