Internet Explorer'ın Document Mode Ayarını Değiştirme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Internet Explorer'ın Document Mode Ayarını Değiştirme
Merhaba arkadaşlar.
Bir sorunum var, forumda aradım ve bulamadım.
Projemde twebbrowser ile bir sayfa açtırıyorum ama sayfa IE10 veya IE11 ile uyumsuz.
Ama sayfayı normal ie ile açıp ardından da F12 tuşuna basıp geliştirici araçlarından belge modunu ie9 yaparsanız sayfa normal şekilde açılıyor.
Özetle benim belli bir sayfayı seçtiğim document mode'a göre açtırmam lazım. feature browser emulation ile ilgili yazanları denedim ama sonuç alamadım.
Bir sorunum var, forumda aradım ve bulamadım.
Projemde twebbrowser ile bir sayfa açtırıyorum ama sayfa IE10 veya IE11 ile uyumsuz.
Ama sayfayı normal ie ile açıp ardından da F12 tuşuna basıp geliştirici araçlarından belge modunu ie9 yaparsanız sayfa normal şekilde açılıyor.
Özetle benim belli bir sayfayı seçtiğim document mode'a göre açtırmam lazım. feature browser emulation ile ilgili yazanları denedim ama sonuç alamadım.
Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
Merhaba...
- Bir URL örneği vermediğinizden sadece fikrimi paylaşayım.
- TWebBrowser'in "user agent" içeriğini istediğiniz explorer versiyonuna göre günceller, sayfayı öyle çağırırsanız muhtemelen istediğiniz sonucu alırsınız.
- Bir URL örneği vermediğinizden sadece fikrimi paylaşayım.
- TWebBrowser'in "user agent" içeriğini istediğiniz explorer versiyonuna göre günceller, sayfayı öyle çağırırsanız muhtemelen istediğiniz sonucu alırsınız.

- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
benzer sorun bende de mevcut. internette ki cozum arayislarim pek olumlu sonuc vermedi.
web sayfasi yuklenirken meta taga su sekilde bir satir ekleyebilsem sorun cozulecek gibi ama html kod icerisine ancak sayfa yuklendikten sonra mudahale edebiiyorum.
<meta http-equiv="x-ua-compatible" content="IE=9">
web sayfasi yuklenirken meta taga su sekilde bir satir ekleyebilsem sorun cozulecek gibi ama html kod icerisine ancak sayfa yuklendikten sonra mudahale edebiiyorum.
<meta http-equiv="x-ua-compatible" content="IE=9">
Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
Merhaba...
http://whatsmyuseragent.com/ linki sizin o anki browser ile hangi USERAGENT kullandığınızı söylüyor. Buraya bakarak uygun olduğunu düşündüğünüz moda hangisi ise onun agent bilgisini not edin ve aşağıdaki verdiğim procedure'e uygulayın.
- Bir proje hazırladım inceleyin. Mesajımda bildirmek istediğim konuyu örnekliyor...
linkinden indirebilirsiniz. Projenin kaynak kodları da var, EXE'si de ...
Procedure aşağıdaki şekilde.
1. UserAgent

2. UserAgent

Procedure
Kullanımı :
http://whatsmyuseragent.com/ linki sizin o anki browser ile hangi USERAGENT kullandığınızı söylüyor. Buraya bakarak uygun olduğunu düşündüğünüz moda hangisi ise onun agent bilgisini not edin ve aşağıdaki verdiğim procedure'e uygulayın.
- Bir proje hazırladım inceleyin. Mesajımda bildirmek istediğim konuyu örnekliyor...
linkinden indirebilirsiniz. Projenin kaynak kodları da var, EXE'si de ...
Procedure aşağıdaki şekilde.
1. UserAgent

2. UserAgent

Procedure
Kod: Tümünü seç
Procedure NavigateEdilsin( WebBrowser:TWebBrowser; strURL, strUserAgent: String );
Var
Headers : OleVariant;
begin
Headers := 'Content-type: application/x-www-form-urlencoded'#10#13
+ 'User-Agent: '+strUserAgent;
WebBrowser.Navigate( strURL,
EmptyParam, EmptyParam, EmptyParam, Headers);
While WebBrowser.ReadyState <> ReadyState_Complete do
begin
Sleep(1);
Application.ProcessMessages;
end;
end;
Kod: Tümünü seç
Var
strUserAgent : String;
begin
strUserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322)';
NavigateEdilsin( WebBrowser1, 'http://www.google.com.tr', strUserAgent );
end;
Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
Bir ekleme:
- Bu yukarıda yazdığım da çözmezse, internet explorer'in mode değişikliği yaptığınızda Windows Registry'de oluşan değişim gözlemlenip, projeniz içerisinde müdahale gerekecek diyebiliriz.
- Bu yukarıda yazdığım da çözmezse, internet explorer'in mode değişikliği yaptığınızda Windows Registry'de oluşan değişim gözlemlenip, projeniz içerisinde müdahale gerekecek diyebiliriz.

Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
Hocam öncellikle cevap ve proje için teşekkürler.
Sorduğunuz sayfa sağlık bakanlığına ait kds performans sayfası, linki : https://kds.sagliknet.saglik.gov.tr/ana ... ?Dashboard (Sayfa genelde sorunlu, bir açılıyor yada açılmıyor.)
Bende sizin gibi düşündüm en başta, user agent string ile çözülebilir dedim ama pek sonuç alamadım.
Yaptıklarımı kısaca anlatayım : Internet Explorer'ın user agent string'ini değiştiren bir eklenti var UAPick isminde (http://www.enhanceie.com/ietoys/uapick.asp), onla söylediğiniz gibi agent stringi Firefox tarzında sayfayı açtırdım ama ne yazık ki tam olarak sayfaki buton clickleri çalışmıyor. Hatta firefox eklentisi olan user agent switcher'den (http://chrispederick.com/work/user-agent-switcher/) bir çok user agent stringi (http://techpatterns.com/forums/about304.html) buldum ve denedim sorun çözülmedi. User agent stringleri http://www.enhanceie.com/ua.aspx adresinden bakarakta doğruladım.
Sayfayı normal olarak ie'de açarsanız giriş bölümü sola kayıyor : http://i.imgur.com/51lJO0b.png
Firefox'ta veya IE'de user agent string kullandığımızda ise normal giriş ekranı geliyor : http://i.imgur.com/7epDKlX.png
Ama IE'de dediğim gibi user agent string değişikliklerinde click olayları işlemiyor. F12 geliştirici araçlarından belge modunu IE9'a değiştirmeden açılmıyor (http://i.imgur.com/JKjVwNg.png).
Verdiğiniz örneği henüz deneyemedim, çünkü sayfa çalışmıyor. Denediğimde sonucu buradan paylaşırım.
Bu arada son söylediğiniz olayı yani registrydeki değişikliği nasıl yakalayabiliriz ? O konuyu merak ettim açıkcası
Sorduğunuz sayfa sağlık bakanlığına ait kds performans sayfası, linki : https://kds.sagliknet.saglik.gov.tr/ana ... ?Dashboard (Sayfa genelde sorunlu, bir açılıyor yada açılmıyor.)
Bende sizin gibi düşündüm en başta, user agent string ile çözülebilir dedim ama pek sonuç alamadım.
Yaptıklarımı kısaca anlatayım : Internet Explorer'ın user agent string'ini değiştiren bir eklenti var UAPick isminde (http://www.enhanceie.com/ietoys/uapick.asp), onla söylediğiniz gibi agent stringi Firefox tarzında sayfayı açtırdım ama ne yazık ki tam olarak sayfaki buton clickleri çalışmıyor. Hatta firefox eklentisi olan user agent switcher'den (http://chrispederick.com/work/user-agent-switcher/) bir çok user agent stringi (http://techpatterns.com/forums/about304.html) buldum ve denedim sorun çözülmedi. User agent stringleri http://www.enhanceie.com/ua.aspx adresinden bakarakta doğruladım.
Sayfayı normal olarak ie'de açarsanız giriş bölümü sola kayıyor : http://i.imgur.com/51lJO0b.png
Firefox'ta veya IE'de user agent string kullandığımızda ise normal giriş ekranı geliyor : http://i.imgur.com/7epDKlX.png
Ama IE'de dediğim gibi user agent string değişikliklerinde click olayları işlemiyor. F12 geliştirici araçlarından belge modunu IE9'a değiştirmeden açılmıyor (http://i.imgur.com/JKjVwNg.png).
Verdiğiniz örneği henüz deneyemedim, çünkü sayfa çalışmıyor. Denediğimde sonucu buradan paylaşırım.
Bu arada son söylediğiniz olayı yani registrydeki değişikliği nasıl yakalayabiliriz ? O konuyu merak ettim açıkcası

Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
Merhaba...
- Sizin için Registry değişikliklerini test ettim, hakikaten sonuç alamadım. Halbuki MSDN'de açık seçik yazıyor olduğu halde.
- Ben de HTML yüklerken header kısmını modifiye ettim. Login işlemine olumsuzluğu olur mu bilmem, sizin login bilgileriyle dener burada sonucu paylaşırsınız.
- Çalışma sistemi basitçe şöyle... Tahmin edeceğiniz üzere WebBrowser'in OnNavigateComplete olayında HTML header kısmı alınıp istediğini kod başa ekleniyor sonra gerisin geriye WebBrowser'a basılıyor...
Kullanımı :
Başarılar. 
- Sizin için Registry değişikliklerini test ettim, hakikaten sonuç alamadım. Halbuki MSDN'de açık seçik yazıyor olduğu halde.
- Ben de HTML yüklerken header kısmını modifiye ettim. Login işlemine olumsuzluğu olur mu bilmem, sizin login bilgileriyle dener burada sonucu paylaşırsınız.
- Çalışma sistemi basitçe şöyle... Tahmin edeceğiniz üzere WebBrowser'in OnNavigateComplete olayında HTML header kısmı alınıp istediğini kod başa ekleniyor sonra gerisin geriye WebBrowser'a basılıyor...
Kullanımı :
Kod: Tümünü seç
procedure TForm1.WebBrowser1NavigateComplete2(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
Const
strAra = 'content="IE=100"';
strDegis = 'content="IE=9"';
Var
strIcerik : String;
begin
if Assigned( pDisp ) then
begin
strIcerik := TWebBrowser(ASender).OleObject.Document.Head.InnerHTML; // Header Kısmını Aldık
if Pos( strAra, strIcerik ) > 0 then
begin
strIcerik := StringReplace( strIcerik, strAra, strDegis, [] );
TWebBrowser(ASender).OleObject.Document.Head.InnerHTML := strIcerik; // Son halini yayına verdik.
end;
end;
end;

- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
cevap icin tesekkurler.
WebBrowser1NavigateComplete2 olayi iki kere tetikleniyor.
1. tetiklemede ilgili content ifadesi headerdan alınıp gerekli degisiklik yapilip tekrar headera set ediliyor.


ikinci tetiklenmeden sonra asagidaki javascript hatasini veriyor.

Bu hatayı verdikten sonrada kullanıcı adı ve parola yazdığımızda login olmuyor.
Aslında degisiklik biraz ise yaramis gibi duruyor. Login ekranı ortada cunku. Sonrasinda ise b_mozilla/browserdom.js icindeki kodlarda bir sikinti cikiyor. Contenti degistirmek tek basina yeterli olmuyor gibi. headerda browserdom.js dosyasina gore bir iki degisiklik daha yapmak gerekiyor gibi.
Biz simdilik problemi Delphi Chromium bilesenini kullanarak cozduk , ie ile ilgili calismalarimiz da devam ediyor. Daha efektif bir cozum bizim icin iyi olacak.
Ilginiz icin tekrardan tesekkurler.
WebBrowser1NavigateComplete2 olayi iki kere tetikleniyor.
1. tetiklemede ilgili content ifadesi headerdan alınıp gerekli degisiklik yapilip tekrar headera set ediliyor.


ikinci tetiklenmeden sonra asagidaki javascript hatasini veriyor.

Bu hatayı verdikten sonrada kullanıcı adı ve parola yazdığımızda login olmuyor.
Aslında degisiklik biraz ise yaramis gibi duruyor. Login ekranı ortada cunku. Sonrasinda ise b_mozilla/browserdom.js icindeki kodlarda bir sikinti cikiyor. Contenti degistirmek tek basina yeterli olmuyor gibi. headerda browserdom.js dosyasina gore bir iki degisiklik daha yapmak gerekiyor gibi.
Biz simdilik problemi Delphi Chromium bilesenini kullanarak cozduk , ie ile ilgili calismalarimiz da devam ediyor. Daha efektif bir cozum bizim icin iyi olacak.
Ilginiz icin tekrardan tesekkurler.
Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
Merhaba...
- WebBrowser'ın Silent özelliğini TRUE yaptınız değil mi ? Aşağıdaki şekilde bir senaryo hazırladım.
// Global bir BOOLEAN değişken koyarak ikinci Navigate olayındaki değişimi kaldırdık...
// Buton click olayında önce Silent özelliğini TRUE yapıyoruz, Boolean Global değişkeni FALSE yapıp ondan sonra navigate komutunu veriyoruz.
// WebBrowser'in OnNavigateComplete2 eventinde bu BOOLEAN değişkeni devreye alıyoruz... iki defa çalışmasını engelliyoruz...
Bu durumda denedim, login işlemini devreye aldı ve sonunda kullanıcı parola hatası verdi. Yani sisem çalışıyor görünüryor. Kaynak kodlar bu mesajın ekinde...Bu projeyle deneyip sonucu bildirir misiniz...?
1.

2.

- WebBrowser'ın Silent özelliğini TRUE yaptınız değil mi ? Aşağıdaki şekilde bir senaryo hazırladım.
// Global bir BOOLEAN değişken koyarak ikinci Navigate olayındaki değişimi kaldırdık...
Kod: Tümünü seç
var
xboolBirinci : Boolean = False;
Kod: Tümünü seç
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
xboolBirinci := False;
WebBrowser1.Silent := True;
WebBrowser1.Navigate( Edit1.Text );
end;
Kod: Tümünü seç
procedure TForm1.WebBrowser1NavigateComplete2(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
Const
strAra = 'content="IE=100"';
strDegis = 'content="IE=9"';
Var
strIcerik : String;
begin
if Assigned( pDisp ) AND (NOT xboolBirinci) then
begin
xboolBirinci := True; // ikinci defa değişikliği engelledik...
strIcerik := TWebBrowser(ASender).OleObject.Document.Head.InnerHTML; // Header Kısmını Aldık
if Pos( strAra, strIcerik ) > 0 then
begin
strIcerik := StringReplace( strIcerik, strAra, strDegis, [] );
TWebBrowser(ASender).OleObject.Document.Head.InnerHTML := strIcerik; // Son halini yayına verdik.
end;
end;
end;
1.

2.

- Dosya ekleri
-
- WEB_Header_Mudahele.rar
- WebBrowser Header müdahale ederek, IE-100 yerine IE-9 yaparak yayınlayan örnek (kaynak kodları ve çalışan exe dahildir)
- (214.2 KiB) 296 kere indirildi
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
ornek icin tesekkurler. evet ornek ile denedigimde login islemi basarili oldu. sayfalaar acildi. ay , yil secimi yapilan comboboxlara tikladigimda ise combolarin icine yil ve aylarin dolmasi gerekirken lutfen bekleyiniz yazisi cikiyor ve oyleyece kaliyor. mevcut durumda yasadigimiz sorun bu combolarin dolmamasiydi. combolarin dolmadigi sayfanin kaynak koduna baktigimda <meta http-equiv="X-UA-Compatible" content="IE=100" > satirini gordum. sanirim bu sayfada tekrardan bolean degiskeni false olarak atamak problemi cozecek gibi.
Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
mrmarman hocam, örneğinizi inceleyerek http://www.beyzam.net/sohbet.php sayfasında sadece applet kısmını göstermeye çalıştım fakat acces violation hataları aldım. Nedenini çözemedim. Kodlamada head yerine body kısmını almaya çalıştım, sanırım burada hata yapıyorum.
Sayfanın body taqları arasındaki tüm divleri silerek tek bir div içinde applet kısmını aldım olmadı.
Kod: Tümünü seç
procedure TForm1.WebBrowser1NavigateComplete2(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
Var
strIcerik : String;
begin
if Assigned( pDisp ) AND (NOT xboolBirinci) then
begin
xboolBirinci := True; // ikinci defa değişikliği engelledik...
strIcerik := TWebBrowser(ASender).OleObject.Document.Body.InnerHTML; // body kısmını al
strIcerik := Memo1.Text;
TWebBrowser(ASender).OleObject.Document.Body.InnerHTML := strIcerik; // Son halini yayına verdik.
end;
end;
Kod: Tümünü seç
<div id="mainPage">
<APPLET codeBase="http://irc.chattur.com/" height="495" archive="http://irc.chattur.com/esChat.jar" width="100%" code="esChat.class" name="esChat">
<PARAM NAME="CABBASE" VALUE="http://irc.chattur.com/esChat.cab">
<PARAM NAME="TimeStamps" VALUE="ON">
<PARAM NAME="nickname" VALUE="">
<PARAM NAME="password" VALUE="">
<PARAM NAME="fullname" VALUE="">
<PARAM NAME="Channel1" VALUE="#oxm,#yarisma,#oyun,#radyo,#ask,#islam,#test,#chattur,#beyzam,#sohbet">
<PARAM NAME="Linkscroll" VALUE="false">
<PARAM NAME="LinkName" VALUE="http://www.beyzam.net">
<PARAM NAME="LinkAddress" VALUE="http://www.beyzam.net">
<PARAM NAME="LanguageFile" VALUE="Turkish.txt">
<PARAM NAME="KeySounds" VALUE="off">
<PARAM NAME="TimeStamp" VALUE="On">
<PARAM NAME="Port" VALUE="7000">
<PARAM NAME="Encoding" VALUE="Cp1254">
<PARAM NAME="Welcome" VALUE="irc.beyzam.net'a bağlanıyorsunuz.">
<PARAM NAME="ident" VALUE="beyzam">
<PARAM NAME="list" VALUE="true">
<PARAM NAME="URL1" VALUE="beyzam.net:www.beyzam.net">
<PARAM NAME="Sound1" VALUE="Huh:s1.au">
<PARAM NAME="Sound2" VALUE="Gul:s2.au">
<PARAM NAME="Sound3" VALUE="Anir:s15.au">
<PARAM NAME="Sound4" VALUE="Meele:s4.au">
<PARAM NAME="Sound5" VALUE="Kisne:s5.au">
<PARAM NAME="Sound6" VALUE="Gul Agla:s6.au">
<PARAM NAME="Sound7" VALUE="Ohyea:s7.au">
<PARAM NAME="Sound8" VALUE="I love you:s8.au">
<PARAM NAME="Sound9" VALUE="Esne:s9.au">
<PARAM NAME="Sound10" VALUE="Islik:s14.au">
<PARAM NAME="Sound11" VALUE="Esne2:s10.au">
<PARAM NAME="menuSound1" VALUE="pop.au">
<PARAM NAME="menuSound2" VALUE="empty.au">
<PARAM NAME="menuSound3" VALUE="water.au">
<PARAM NAME="menuSound4" VALUE="swing.au">
<PARAM NAME="menuSound5" VALUE="clank.au">
<PARAM NAME="menuSound6" VALUE="beep.au">
<PARAM NAME="menuSound7" VALUE="nomatch.au">
<PARAM NAME="menuSound8" VALUE="beeper.au">
<PARAM NAME="menuSound9" VALUE="doorbell.au">
<PARAM NAME="menuSound10" VALUE="trumpet.au">
<PARAM NAME="menuSound11" VALUE="zzziuu.au">
<PARAM NAME="menuSound12" VALUE="connection.au">
<p>Browseriniz java desteklemiyor. <a href="http://www.java.com/tr/download/windows_xpi.jsp?locale=tr&host=www.java.com" target="_blank">Windows Xp kullanicilari chat programini açamiyorsaniz burayi tiklayarak gerekli programi yükleyip kurunuz.</a></p>
</APPLET>
</div>
Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
Merhaba.
- Keşke size söylediğim gibi yapsaydınız.
- Bu siteyi navigate ettirmenize lüzum yok. Verdiğim code tagi içindekini bir HTML dosya yapın. Mesela sohbet.html olsun. Siz bu dosyayı Webbrowser ile navigate edin.
- Keşke size söylediğim gibi yapsaydınız.
- Bu siteyi navigate ettirmenize lüzum yok. Verdiğim code tagi içindekini bir HTML dosya yapın. Mesela sohbet.html olsun. Siz bu dosyayı Webbrowser ile navigate edin.

Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
ben de aynı sorunla boğuşuyorum bir çok alternatif denedim ama olmadı. Hocam Sorunu hallettiyseniz çözümü paylaşırsanız sevinirim. Bende de combobox bir makine de normal çalışırken diğerinde takılıp kalıyor. Lütfen bekleyiniz diyor. O makineler de ie11 var çalışan makineler de en fazla ie10 var. Registry ayarından tutun da muharrem hocamın çözümlerine kadar denedim ama olmadı. İnşallah sorunu çözmüşsünüzdür de bizimle burada paylaşırsınız. Hayırlı işler diliyorum.
Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
Sorun ajax işlemlerinde programın takılıp kalmasıydı. Bir çok ie ayarı denedim burada yazılanları da denedim sorunun kaynağını buldum. Internet explorer 11 den kaynaklanıyor. Sorunun kaynağını (ie 11) sistemden kaldırıp daha eski (ie10 veya ie9) sürümü yükleyince ajax çalıştı. Böyle bir çözüm hoş değilse de kısa vadede işimi gördü. Ama ben programsal ya da ayarlarla ilgili olarak çözmeyi isterdim. İyi çalışmalar dileğiyle.
Re: Internet Explorer'ın Document Mode Ayarını Değiştirme
Bu örneği inceleyerek bir çok sitede denedim ve çalıştı fakat instagram ana sayfasını açmak istediğimde işe yaramadı. Sebebini anlamış değilim sayfa açılıyormuş gibi scroolbar çubukları ekleniyor fakat sayfa bomboş
Oysaki normal explorer 11 ile açılıyor.
