5

私のサイトには、さまざまな画面幅に合わせてカスタマイズされた多くのスタイルシートがあります。ブラウザのサイズが変更されると、window.onresizeイベントは、を見て実際にサイズ変更が行われたことを確認しdocument.documentElement.clientWidthます。含まれている場合は、スクロールバーが表示されるまで、連続して大きいスタイルシートがオンになります。次に、スクロールバーが消えるまで逆の順序でオフにします。スクロールバーは、と比較することで検出されoffsetWidthますscrollWidth

IE8では、2つの新しい問題がサイズ変更の検出を混乱させます。1つは、onresizeスクロールバーが表示または非表示になるたびに発生し、2つは、d.dE.clientWidthスクロールバーなしの幅を報告します。これは、IE7および他のすべてのブラウザーからの中断です。私のサイトは、ロジックがより大きなスタイルシートをアクティブにしてスクロールバーを作成するループに頻繁に閉じ込められ、スクロールバーの表示または非表示によって変更さonresizeれたためにフィルターで除外できない別のサイズ変更イベントをトリガーします。IE8に私がチェックできるclientWidthようなものがあれば、これは簡単な修正になります。outerWidth

4

2 に答える 2

3

どのブラウザーでも onresize をトリガーするスクロールバー生成を扱ったことがないので、d.dE.clientWidth をチェックすることが適切な検証ではないことに気づきませんでした。実際、スクロールバーを含めたことはありませんでした。代わりに d.dE.offsetWidth をチェックすると、繰り返される onresize イベントが除外されます。

于 2009-03-27T19:09:42.997 に答える
1

あなたはほぼ確実にこれを知っています-そしてそれはIE8を標準モードから強制するのであなたの質問に実際には答えません-しかし迅速な修正はHTTPヘッダーを使用してIE8をIE7モードに強制することです。

于 2009-03-27T08:23:28.900 に答える