2010-11-15 21 views
12

ben başka bir tarayıcı (Chrome, Firefox) üzerinde olmaz aşağıdaki sorunla deli gidiyorum ... (kırmızı x) görüntüleri göstermiyor:IE8 bazen

  • IE8 önbellek temizlenir
    • tarayıcı, dinamik olarak birkaç görüntü isteyen ve yaratan HTML/Javascript sayfasını açar. Bu HTML sayfası, bir Tomcat sunucu localhost: 8084'ten sunulmaktadır.
    • IE tarafından istenen 10 görüntüden çoğu zaman KIRMIZI X görüntüler.
    • Geliştirici Resim Raporu (F12) bazı görüntülerin "dosya boyutu" nu doğru olarak gösterdiği # bayt, henüz görüntü gösterilmiyor görüntü dosyası boyutu "bilinmeyen bayt" ve görüntü çalışmıyor.
    • Bazen 10 görüntünün 2-4'ü belirir ve gerisi başarısız olur!
    • Bazen 1 milyar kez yenilme çılgın öfkesiyle, görüntüler ortaya çıkar.
    • Gerçek kicker, HTTP Sunucumda bir kesme noktası koyduğumda soketin bile açılmamasıdır. IE, başarısız olduktan sonra görüntüleri sunucudan almaya bile çalışmıyor.
    • Ve son olarak aynı kodu çalıştırırsam ancak google maps gibi bir yerden bir görüntü isteğinde bulunursam, IE'de sorunsuz çalışır.

    İşte benim javascript kodu var: HTTP Sunucusu için ben BOOST örnek ASIO HTTP Sunucusu Link kullanıyorum

    <script type="text/javascript"> 
        var ctr = 0; 
        function getImage(url) 
        { 
         var img = document.createElement("img"); 
         img.src = url + "&nc=" + ctr; 
         ctr ++; 
         img.width = 128; 
         img.height = 128; 
         document.body.appendChild(img); 
        } 
    
        for (var i = 0; i < 10; i=i+1) 
        { 
         //THIS FAILS MOST OF THE TIME 
         setTimeout("getImage('http://myHostName:9980/GenerateImageStatic?parameter=1')", 1000); 
         //THIS WORKS! WHY? 
         //setTimeout("getImage('http://maps.google.com:80/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=14&size=512x512&maptype=roadmap&markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.&markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false')", 1000); 
        } 
    </script> 
    

    yüzden herhangi URI isteği için modifiye, bir png dosyası gönderir (denedim çeşitli dosyaların PNG kodlaması olmadığından emin olmak kötü). HTTP üstbilgisinde İçerik türü var: "image/png". Yani mime tipi gönderilir.

    Uzun zamandır bir çözüm bulmaya çalışıyorum. Çeşitli mesajlar aracılığıyla okuyun:

    • Mime type is the problem. Benim durumumda MIME tipi sorun değil. İçerik türünü ayarlıyorum. Sunucudan gönderilen başlıkları görüntülemek için Firefox LiveHTTPHeader eklentisini de kullandım. Bazı önbellek denetimi üstbilgileri haricinde, üstbilgiler google İçerik türü açısından gönderdikleriyle aynı:
    • Security error. Tamam, çapraz etki alanı görüntüleri bir güvenlik riskidir. Ya da bir şey isteği engelliyor. Öyleyse neden zamanın% 100'ü başarısız olmaz ?! IE neden herhangi bir çapraz etki alanı görüntüsü istemiyor? Yine de maps.google.com isteği çalışıyor ve benimki sadece bazen çalışıyor. Aynı şey herhangi bir güvenlik duvarı veya virüsten korunma için de geçerlidir. Ayrıca sunucuyu çeşitli bağlantı noktalarında çalıştırmayı denedim (80, 8080, 9980).
    • Javascript error. Bence Javascript doğru. Aslında GWT ile aynı sorunu yaşıyordum. Bu yüzden sorun olan GWT olduğunu düşündüm. Ve IE ve GWT ile görüntülerle ilgili bir olay hatası vardı. Bu yüzden kodu sadece Javascript'e basitleştirdim. GWT yok.
    • Belki de C++ HTTP Sunucusu uygulamasıdır. Bu bir olasılık. Ancak Firefox ve krom aynı kodla sorunsuz çalışır.

    Herhangi bir fikir? Teşekkürler.

    EDIT Güvenilir adreslere myHostName ekledim. Ayrıca güvenlik ayarlarını dahili ve internet siteleri için alçalttım. Etkinleştirilmişse sunucuda etkin kalmayı devre dışı bırakmaya çalışacağım.Ancak, bahsettiğim gibi, IE'yi hiç bir görüntü alma girişimi görmüyorum. Soket IE'den herhangi bir istek almaz, bu nedenle başlıklardaki canlılığı kaldırmak yardımcı olmayabilir. Resimlerinizi içinde ne renk modu

  • +2

    IE'yi sevmelisiniz. "Dünyayı tehlikeli bir yer haline getirme">: - O – Bojangles

    +0

    IE'nin güvenilir siteler listesine 'http: // myHostName: 9980 /' eklemeyi denediniz mi? Ayrıca, HTTP sunucunuz hayatta kalmayı destekliyorsa, bunları devre dışı bırakmayı denediniz mi? –

    cevap

    12

    kontrol edin.

    yanlışlıkla Photoshop CMYK RGB8 bir resmin renk modunu değiştirdi ve aynı sorun koştu var. IE8, görüntüyü görüntülemede başarısız olurken, Firefox hiç sorun yaşamayacaktır.

    +0

    Kodlama olduğunu sanmıştım. Bir çok insan, PNG'de saydamlığı desteklemeyen IE'den şikayet ediyor. Google haritalarının hangi görüntülerin (PNG-8, transparancy) kaydedildiğini ve sunucumun gönderdiği görüntüyü çektim. – Budric

    1

    IE'de, öğenin DOM'a eklendikten sonra kaynağı ayarlamanız gerektiğine inanıyorum, aksi halde doğru şekilde oluşturulmaz.

    +0

    Kodu değiştirmeyi denedim, böylece resim oluşturur, appendChild(), img.src'yi ayarlar. Javascript'ten image.width/height'u kaldırdım. Aynı davranış. – Budric

    1

    Sunucunuzdaki bir sorun gibi görünüyor. Sorunu daraltmak için birkaç şey denemek için:

    Statik olarak çalışıp çalışmadığını kontrol edin. Bu, bu görüntüleri içeren düz bir html sayfası yapar. Onlar ortaya çıkıyor mu?

    Zamanlayıcınızın, zamanlayıcıyı döngü içinde çağırmak yerine döngü yapan tek bir işlevi yürütmesi için değiştirmeyi deneyin.

    (bunu ne yaptığını görebilirsiniz adresler ile birlikte) o bunu yapmak

    mı basitçe elemanları html yazma, (herhangi bir zamanlayıcı olmadan, sayfa Yükte) bir document.write yapsın sayfadaki bir düğmeyi tıklatarak, bir zamanlayıcısından ziyade. Her seferinde bir görüntü yapsın.

    Tüm bu şeyleri denerseniz, muhtemelen problemle karşılaşırsınız, ancak olmazsa ne olduğunu bildirin.

    +0

    Denerim. HTTP sunucusu ile ilgili bir sorun olduğunu düşündüm. Ama sonra Firefox ve Chrome istekleri için çalışıyor - her seferinde. JavaScript ve document.append *() veya işlemler/döngüler sırasındaki bir sorunsa, neden aynı kod maps.google.com URL'si için çalışıyor? ... – Budric

    +0

    Evet, iyi bir zamanlama sorunu olabilir. sunucudaki hata, tüm tarayıcılarda veya sorunlu tarayıcıda zamanın% 100'ünde gerçekleşmez. – rob

    1

    IE8'de görüntülenmeyen resimlerle aynı sorunu yaşıyorum ancak diğer tarayıcılarda sorun yok. Bu, yerel olarak kaydedilmiş dosyalar için bile geçerlidir. IE8 ile açarsam kırmızı x alırım, ancak diğer her program tamam. Görüntünün özelliklerine baktım ve Photoshop'tan kaynaklandım, bu yüzden yukarıda belirtildiği gibi CMYK sorunu olduğunu tahmin ediyorum. Bu görüntüyü RGB projesini kullanarak kaydedersem sorun çözülür.

    0

    Evet, hala sorunun ne olduğunu bilmiyorum. İnsanlar CMYK'yi önerdi. Bu çözüm sizin için işe yarıyorsa, bu harika. Her zaman kodlama ve RGB için libPNG kullanıyorum. CMYK benim için sorun değildi.

    Boost/asio http sunucusu örneği # 3 kullanarak HTTP sunucusunu uyguladık. Java Servlet'in yanı sıra. Aynı problemler. Bazen çalışır, bazen

    Ben pes ediyorum.