Webbrowser üzerinde çalıştırılan javascriptin dönüş değeri

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
delphi_programmer
Üye
Mesajlar: 53
Kayıt: 01 Haz 2005 11:47

Webbrowser üzerinde çalıştırılan javascriptin dönüş değeri

Mesaj gönderen delphi_programmer »

Arkadaşlar merhaba,

Delphi 7 kullanıyorum. Webbrowser nesnesine yüklenmiş bir web sayfam var. Delphi vasıtası ile webbrowser nesnesi üzerinde javascript kodu execute ediyorum.

Örneğin

Kod: Tümünü seç

javascript:aa=document.forms(0);alert(aa.name)
Örneğin burada webbrowser vasıtası ile ilk formun adını alert edebiliyorum.

Gördüğünüz üzere bunu bir aa değişkenine atama yapıyorum.
ExecuteScript fonksiyonu kullanıyorum ama bu javascript'in dönüş değerini Delphi içine nasıl alırım ?

Örnek vermek gerekirse ben burada aa değişkenin içeriğini Delphi'ye almak istiyorum.

Cevaplar için şimdiden teşekkürler.
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Aklıma gelen bir çözümü paylaşayım.
Html formunda hidden bir field oluşturursun. Sonra execute ettiğin javascript koduda ihtiyacın olan bu değeri o hidden fieldin valuesine yazar. Sende delphi tarafında Twebbrowser'ın içindeki DOM yapısına uygun bir şekilde kod yazarak o hidden field deki değeri alabilirsin.

Eğer bu olmazsa bi çözüm daha var. Ufak bir com nesnesi yazmayı gerektiriyor.
delphi_programmer
Üye
Mesajlar: 53
Kayıt: 01 Haz 2005 11:47

Mesaj gönderen delphi_programmer »

undefined teşekkürler.
Evet ben de bu şekilde olsa olabilirdi diye düşündüm ama.
Web sitesine müdahale şansım olmadığı için HTML içerisinde hidden bir alan oluşturma şansım yok.

Benim sitem olmasa bile içerisinde javascript kodlarıyla belki bir hidden text alanı oluşturabilirim diye düşünüyorum ama yine de bildiğim kadarı ile çalıştırılan javascript'in return value'sunu alabilmenin yolu var diye biliyorum.

Bir zamanlar bir web sitesinde bununla ilgili bir örnek görmüştüm ama yaklaşık 1 gün boyunca google araması yaptım bulamadım.
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Bahsettiğim ikinci çözümü yazıyorum, ama bu biraz karışık. Eğer Delphi'den javacripte ulaşamıyorsak, js'den Delphi'ye ulaşırız. Ben bi projemde kullandım bunu.

http://www.delphidabbler.com/articles?article=22&part=3

Link'te bu detaylı olarak yazılmış, bazı interface'leri implement edip, webbrowser içinde çalışan javascriptin senin hazırladığın özel nesneye ulaşmasını sağlamanı anlatıyor.
Burdaki bazı aşamaları kendin yapman gerekmiyor. Burdan http://www.bsalsa.com/downloads.html embedded webbrowser component paketini indir. Bu paketteki webbrowser nesnesinde gerekli interface'ler implement edilmiş. Sen sadece external nesneni implement edip vermen gerekiyor. Javascript ile örnek olarak external.alanismi = 'xyz' demen yeterli olacak.
delphi_programmer
Üye
Mesajlar: 53
Kayıt: 01 Haz 2005 11:47

Mesaj gönderen delphi_programmer »

undefined,
Verdiğin bilgiler için teşekkür ederim.

Az önce ben de bu makaleyi bulmuştum ve denemelerini yaparken daha basit bir çözüm buldum gibi.

embeddeWB'yi projeme dahil ettim, ilgili browser componentinin OnShowMessage event'ından faydalarak, javascript ile ilgili değişkeni alert ettirdim ve OnShowMessage event'ı ile de değişkeni yakalayabildim.

İyi çalışmalar.
Cevapla