2009-03-27 4 views
5

私のサイトには、さまざまな画面幅にカスタマイズされた多くのスタイルシートがあります。ブラウザのサイズが変更されると、window.onresizeイベントは実際にdocument.documentElement.clientWidthを見てサイズ変更が行われたことをチェックします。スクロールバーが表示されるまで、スクロールバーが表示されるまで、より大きなスタイルシートを連続的にオンにします。次に、スクロールバーが消えるまで、逆の順序でオフにします。スクロールバーは、offsetWidthとscrollWidthを比較することによって検出されます。ウィンドウが実際にIE8標準モードでサイズ変更されたかどうかをどのように検出できますか?

IE8では、2つの新しい問題がサイズ変更の検出を混乱させる。 1つは、スクロールバーが表示または消えるたびにonresize、d.dE.clientWidthはスクロールバーがない場合の幅、IE7および他のすべてのブラウザからのブレークを報告します。私のサイトは頻繁にループに閉じ込められ、onresizeロジックがより大きなスタイルシートをアクティブにしてスクロールバーを作成し、スクロールバーが表示されたり消えたりすることでclientWidthが変更されたため、 IE8で確認できるouterWidthのようなものがあれば、これは簡単な修正となるでしょう。

答えて

3

私はスクロールバーの世代がどのブラウザでさらにonResizeのトリガを扱ったことがなかったので、私はd.dE.clientWidthをチェックする良い検証ではなかった、実際にはスクロールバーを含めることはなかったことを実現していませんでした。代わりにd.dE.offsetWidthをチェックして、繰り返されるonresizeイベントをフィルタリングして除外します。

1

あなたはほぼ確実にこのことを認識している - そしてそれは、標準モードのうち、IE8を強制的だとして、それは本当にあなたの質問に答えていない - しかし、クイックフィックスはforce IE8 into IE7 mode using an HTTP headerになります。

+0

IE7互換モードは国境崩壊を導入し、回避するにはあまりにも醜い回帰を置くなかった場合、これは良い解決策になります。 – Lucent

関連する問題