IE8 Crash on getStyle background-position

2019-06-11 13:27发布

问题:

I've found a strange bug in Internet Explorer 8. Maybe someone can help me move around it.

When I try to grab the background position of an element, using background-position-x all versions of Internet Explorer work as excepted except for IE8 that crashes.

When I run el.getStyle('background-position') all browsers give me the correct values except from IE (6, 7 and 8) that return undefined.

I therefore use el.getStyle('background-position-x') for all IE versions.

IE8, however, crashes on the above code.

Anyone had similar problems?

回答1:

Thanks for the help everyone. This really is a bug and works only on the following scenario.

  1. css must be loaded on an external stylesheet
  2. element has no inline styling

The way to fix it, even tough dirty, is to add inline styling to the element. Makes IE8 happy and all other browsers work.

I did not test but, according to this ticket, FF2 also suffers from the same behavior.

Side notes:
@marcgg - I was going to downvote your answer as it really is not helpful (and bound to start a flame war) but, all truth said, jQuery does not manifest this problem. Even though, as you probably already knew, it is NOT an option! ;)

@Fabien - IE does support background-position-x and lacks support for background-position the W3C approved construction.



回答2:

Why not use jquery's css function that works fine crossbrowser ?



回答3:

Try using:

el.getStyle('backgroundPositionX')

and

el.getStyle('backgroundPositionX')


回答4:

yes, older thread, but figured I'd post another solution that I bumped into @ mootools lighthouse....

if (Browser.Engine.trident){
    var xy = el.getStyle('background-position-x')+" "+el.getStyle('background-position-y');
} else {
    var xy = el.getStyle("backgroundPosition");
}

works well for me so far.