Moja witryna ma wiele arkuszy stylów dostosowanych do różnych szerokości ekranu. Podczas zmiany rozmiaru przeglądarki zdarzenie window.onresize sprawdza, czy zmiana rozmiaru rzeczywiście miała miejsce, patrząc na document.documentElement.clientWidth. Jeśli tak, włącza kolejne większe arkusze stylów, aż pojawią się paski przewijania. Następnie wyłącza je w odwrotnej kolejności, dopóki paski przewijania znikną. Paski przewijania są wykrywane przez porównywanie przesunięciawidth do scrollWidth.Jak mogę wykryć, czy okno naprawdę zmieniło rozmiar w trybie standardów IE8?
W IE8 dwa nowe problemy utrudniają wykrywanie zmiany rozmiaru. Po pierwsze, uruchamia onresize, gdy paski przewijania pojawiają się lub znikają, a dwa d.dE.clientWidth zgłasza szerokość bez pasków przewijania, przerwę od IE7 i wszystkich innych przeglądarek. Moja witryna jest teraz często uwięziona w pętli, w której logika onresize aktywuje większy arkusz stylów, który tworzy paski przewijania, które następnie wyzwalają kolejne zdarzenie zmiany rozmiaru, którego nie można odfiltrować, ponieważ zmieniono parametr clientWidth z powodu pojawiania się lub znikania pasków przewijania. Byłoby to banalną poprawką, gdyby IE8 miał coś w rodzaju zewnętrznej Width, którą mógłbym sprawdzić.
Byłoby to dobre rozwiązanie, gdyby tryb zgodności IE7 nie wprowadzał zawirowań granic i regresji na hover, które są zbyt brzydkie do obejścia. – Lucent