2009-11-27 38 views
0

我在Internet Explorer 8中发现了一个奇怪的错误。也许有人可以帮助我移动它。IE8在getStyle背景位置崩溃

当我尝试抓取元素的背景位置时,使用background-position-x所有版本的Internet Explorer都可以工作,但IE8会崩溃

当我运行el.getStyle('background-position')时,除IE(6,7和8)返回undefined以外,所有浏览器都给我正确的值。

因此,我对所有IE版本都使用el.getStyle('background-position-x')

但是,IE8在上述代码中崩溃。

任何人都有类似的问题?

+0

您是否在调用函数之前检查el是否为空?我曾有过其他浏览器中未初始化对象的实例,而不是IE。 – theraneman 2009-11-27 11:25:16

+0

感谢您的投入!它确实是一个mootools/ie错误。你必须使用内联样式。阅读我的答案吼叫。 – Frankie 2009-11-27 11:47:26

回答

2

感谢大家的帮助。这确实是一个错误,仅适用于以下场景。

  1. CSS必须在外部样式表加载
  2. 元素没有内嵌样式

解决它的办法,甚至强硬的脏,是联样式添加的元素。使IE8开心并且所有其他浏览器都能正常工作。

我没有测试,但根据to this ticket,FF2也遭受同样的行为。

旁注:
@marcgg - 我要去downvote你的答案,因为它确实是没有帮助的(和必然要开始火焰战争),但是,所有的真理说,jQuery的不显示这个问题。尽管你可能已经知道,但这不是一种选择! ;)

@Fabien - IE支持background-position-x,并且W3C认可的构造对background-position缺乏支持。

+0

这是很有用的知道,虽然我最近做了一个精灵动画,读取这个块的元素与外部样式表和mootools,并没有这样的问题。也许我很幸运;) – 2009-11-27 15:44:16

+0

@Dimitar,也许你在抓取它之前通过JavaScript设置CSS。这样IE浏览器工作正常。在我的构造上,我必须在将其设置为新值之前阅读背景位置。那是casa吗? – Frankie 2009-11-27 16:46:01

+0

是的,它的一个元素通过新元素和一个有效的初始值完全构建到DOM中。但是,随后的变化是在阅读之后。 。 现在你提到它,IE中有一些奇怪的解决方法就是这样 - 例如,将元素转换为内联内溢出:隐藏层,当你想要块可以令人沮丧... – 2009-11-27 22:08:06

0

为什么不使用jquery's css function工作良好的crossbrowser?

+0

你建议使用一个小型css()函数的整个库? – James 2009-11-27 11:27:04

+1

他已经在使用MooTools ...所以使用JQuery将毫无意义。 – James 2009-11-27 11:27:49

+0

MooTools或PrototypeJS;) IE不支持background-position-x – 2009-11-27 11:35:11

0

尝试使用:

el.getStyle('backgroundPositionX') 

el.getStyle('backgroundPositionX') 
+0

试图出于好奇,但他们会仍然崩溃IE8。走线的方式就像肮脏的内联式样。 – Frankie 2009-11-27 11:56:20

0

是,旧的线程,但想我会发布另一个解决方案,我碰上@ mootools的灯塔....

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

到目前为止效果不错。