getStyle background-positionでIE8がクラッシュする
-
05-07-2019 - |
質問
Internet Explorer 8で奇妙なバグを見つけました。たぶん誰かがそれを回避するのを手伝ってくれるかもしれません。
background-position-x
を使用して要素の背景位置を取得しようとすると、クラッシュするIE8 を除き、Internet Explorerのすべてのバージョンが例外として動作します。
el.getStyle( 'background-position')
を実行すると、すべてのブラウザで undefined
を返すIE(6、7、および8)以外の正しい値が表示されます。
したがって、すべてのIEバージョンで el.getStyle( 'background-position-x')
を使用します。
IE8がクラッシュします。
誰もが同様の問題を抱えていましたか
解決
皆様のご協力に感謝します。これは本当にバグであり、次のシナリオでのみ機能します。
- cssは外部スタイルシートにロードする必要があります
- 要素にはインラインスタイルがありません
それを修正する方法は、たとえ汚れがひどい場合でも、要素にインラインスタイリングを追加することです。 IE8を幸せにし、他のすべてのブラウザーが動作するようにします。
テストしませんでしたが、に従ってチケット、FF2も同じ動作に苦しんでいます。
サイドノート:
@marcgg-本当に役に立たないので(そして、火炎戦争を開始することになります)、あなたの答えに投票するつもりでしたが、すべての真実は、jQueryはこの問題を明示していません。おそらく既にご存知のように、それはオプションではありません! ;)
@Fabien-IEは background-position-x
をサポートしますが、W3Cが承認した構造の background-position
のサポートはありません。
他のヒント
優れたクロスブラウザで動作する jqueryのcss関数を使用しないのはなぜですか?
使用してみてください:
el.getStyle('backgroundPositionX')
and
<*>はい、古いスレッドですが、@ mootools lighthouseにぶつかった別のソリューションを投稿すると思いました...
if (Browser.Engine.trident){
var xy = el.getStyle('background-position-x')+" "+el.getStyle('background-position-y');
} else {
var xy = el.getStyle("backgroundPosition");
}
これまでのところ私にとってはうまく機能しています。