Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

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

Try using:

el.getStyle('backgroundPositionX')

and

el.getStyle('backgroundPositionX')

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top