2009-03-27 14 views
5

Sitemin, çeşitli ekran genişlikleri için özelleştirilmiş birçok stil sayfası var. Tarayıcı yeniden boyutlandırıldığında, window.onresize olayı, yeniden boyutlandırmanın gerçekten de document.documentElement.clientWidth dosyasına bakarak gerçekleştiğini denetler. Olduysa, kaydırma çubukları görünene kadar ardışık olarak daha büyük stil sayfalarını açar. Ardından, kaydırma çubukları kaybolana kadar onları ters sırayla kapatır. Kaydırma çubukları, offsetWidth öğesini scrollWidth ile karşılaştırarak algılanır.Pencerenin IE8 standartları modunda gerçekten yeniden boyutlandırılıp kaydedilmediğini nasıl anlayabilirim?

IE8'de, iki yeni sorun bir yeniden boyutlandırmanın algılanmasını bozar. Biri, kaydırma çubukları görüntülendiğinde veya kaybolduğunda onresize olur ve iki, d.dE.clientWidth, genişliğini kaydırma çubuğu olmadan raporlar, IE7 ve diğer tüm tarayıcılardan kopar. Sitem şimdi, genellikle onresize mantığının daha büyük bir stil sayfasını etkinleştirdiği döngüde sıkışıp kalıyor, bu da kaydırma çubukları oluşturarak, daha sonra istemcinin kaydırma çubuklarının görünmesi veya kaybolması nedeniyle değiştiği için filtrelenemeyen başka bir yeniden boyutlandırma olayını tetikliyor. IE8'in kontrol edebileceğimin dışsal gücü gibi bir şeyleri varsa, bu çok basit bir düzeltme olurdu.

cevap

3

Herhangi bir tarayıcıda scrollbar nesli tetikleme onresize ile hiç uğraşmadığım için d.dE.clientWidth denetiminin iyi bir doğrulama olmadığını ve aslında kaydırma çubuklarını hiç içermediğini fark etmedim. Şimdi bunun yerine d.dE.offsetWidth öğesini kontrol ediyorum ve tekrarlanan onresize olayları filtrelendi.

1

Neredeyse bunu kesinlikle biliyorsunuz - ve IE8'i Standartlar Modundan çıkmaya zorlarken sorularınızı yanıtlamıyor - ancak hızlı düzeltme force IE8 into IE7 mode using an HTTP header olacaktır.

+0

Bu, IE7 uyumluluk kipinin etrafta çalışmak için çok çirkin olan sınır çöküşünü ve vurgulu regresyonları tanıtmadığı takdirde iyi bir çözüm olabilir. – Lucent

İlgili konular