TWebBrowser' ın Kullandığı IE Versiyonu Sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

TWebBrowser' ın Kullandığı IE Versiyonu Sorunu

Mesaj gönderen vkamadan »

Merhaba değerli üyeler ,
Sistemimde İ.E. 9.0 yüklü olmasına rağmen projeme eklediğim TWebBrowser ile tarayıcı tipi ve versiyonunu bildiren JavaScript i içieren aşağıdaki HTML sayfasını navigate ettiğimde bana i.e versiyon 7.0 kullanıldığı bilgisini veriyor, TWEbBrowser ın sistemde yüklü tarayıcı versiyonunu kullanması için ne yapabilirim ? başka sistemlerde de denedim hep 7.0 sonucunu veriyor, bu sorunun farkına şöyle vardım , normal i.e ile açabildiğim sayfayı TWebBrowser dan açtığımda bir sürü JavaScript hata dialoğu açıp düzgün çalışmadı.

Kod: Tümünü seç


<script>
function get_browser(){
    var N=navigator.appName, ua=navigator.userAgent, tem;
    var M=ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
    if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
    M=M? [M[1], M[2]]: [N, navigator.appVersion, '-?'];
    return M[0];
    }
function get_browser_version(){
    var N=navigator.appName, ua=navigator.userAgent, tem;
    var M=ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
    if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
    M=M? [M[1], M[2]]: [N, navigator.appVersion, "-?"];
    return M[1];
    }
	alert(get_browser());
	alert(get_browser_version());
</script>

Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: TWebBrowser' ın Kullandığı IE Versiyonu Sorunu

Mesaj gönderen SimaWB »

Bu MSDN blog'unda yazdığında göre WebBrowser sınıfı varsayılan olarak IE7 standart mode'ta çalışıyormuş.

Kendi uygulamanızın farklı bir modda çalışmasını istiyorsanız registry'de değişiklik/ekleme yapmanız gerekiyormuş:
(HKEY_CURRENT_USER yada HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION içerisine uygulamanızın ismini ve değer olarak da hangi modda çalışmak istediğinizi yazmalısınız.

FEATURE_BROWSER_EMULATION için yazılabilecek değerlerin listesi aşağıdaki linkte mevcut:
http://msdn.microsoft.com/en-us/library ... s.85).aspx
There's no place like 127.0.0.1
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: TWebBrowser' ın Kullandığı IE Versiyonu Sorunu

Mesaj gönderen Lord_Ares »

Merhaba buna bir bakmanızı isterim mrmarman hocamın harika bir paylaşımı. Kendisine buradan tekrar çok teşekkür ediyorum.
viewtopic.php?f=2&t=31899
viewtopic.php?f=2&t=31718
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: TWebBrowser' ın Kullandığı IE Versiyonu Sorunu

Mesaj gönderen vkamadan »

@SimaWB , Allah razı olsun, tam olarak olayın çözümüne belirttiğin yolla ulaştım.
64bit sistemlerde registry de uygulamam 32bit olduğu için Wow6432Node altında tanımlamak dışında farklı bir sorun çıkmadı.

İlave olarak bu browser emulasyonunu değiştirme durumu sadece sayfayı yorumlarken seçilen browser gibi davrandı (birincil istediğimiz buydu tabi)
sorun şurda çıktı ;
i.e 9 ve öncesinde TWebBrowser.OleObject üzerinden Frame içindeki elemanlara aşağıdaki şekilde ulaşabilirken

Kod: Tümünü seç

TWebBrowser.OleObject.Document.Frames.item(0).Document.GetElementById('sdfsdfdff').Value ....
i.e 10 ve üzerinde
TWebBrowser.OleObject.Document.Frames.item(0) noktasına kadar sorun yok ama Frame in Document özelliği bulunmamaktadır diyerek patlıyordu, emulation mode bu durumu değiştirmedi i.e 9 un üstündeyse ilgili sorun yaşanmaya devam etti.

@Lord_Ares öncelikle cevabın için teşekkürler,
evet sayın @mrmarman ın paylaşımı gerçekten de çok faydalı ama şuan ki konuyla ilgili değildi.

İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
Cevapla