Javascript IE8在getStyle背景位置崩溃
我在InternetExplorer8中发现了一个奇怪的bug。也许有人能帮我搬过去 当我试图获取元素的背景位置时,使用Javascript IE8在getStyle背景位置崩溃,javascript,internet-explorer-8,mootools,Javascript,Internet Explorer 8,Mootools,我在InternetExplorer8中发现了一个奇怪的bug。也许有人能帮我搬过去 当我试图获取元素的背景位置时,使用background-position-x所有版本的Internet Explorer都可以正常工作,但崩溃的IE8除外 当我运行el.getStyle('background-position')时,除了IE(6、7和8)中返回未定义的值外,所有浏览器都会给我正确的值 因此,我对所有IE版本使用el.getStyle('background-position-x') 然而,I
background-position-x
所有版本的Internet Explorer都可以正常工作,但崩溃的IE8除外
当我运行el.getStyle('background-position')
时,除了IE(6、7和8)中返回未定义的值外,所有浏览器都会给我正确的值
因此,我对所有IE版本使用el.getStyle('background-position-x')
然而,IE8在上述代码上崩溃
有人有类似的问题吗?为什么不使用效果很好的crossbrowser?谢谢大家的帮助。这确实是一个bug,只适用于以下场景
css必须加载到外部样式表上
元素没有内联样式
解决这个问题的方法是在元素中添加内联样式。让IE8开心,让所有其他浏览器都工作
我没有进行测试,但据我所知,FF2也有同样的行为
旁注:
@Margg——我本来打算否决你的答案,因为它确实没有帮助(而且必然会引发一场火焰战),但是,所有的事实都表明,jQuery并没有表现出这个问题。尽管,正如您可能已经知道的,这不是一个选项!;)
@Fabien-IE确实支持background-position-x
,并且不支持background-position
W3C批准的结构。尝试使用:
el.getStyle('backgroundPositionX')
及
是的,旧的线程,但我想我会发布另一个解决方案,我碰到@mootools lighthouse
if (Browser.Engine.trident){
var xy = el.getStyle('background-position-x')+" "+el.getStyle('background-position-y');
} else {
var xy = el.getStyle("backgroundPosition");
}
到目前为止,对我来说效果很好。在调用el上的函数之前,是否检查了el是否为null?我曾经有过这样的例子:一个对象在其他浏览器中没有初始化,而在IE中没有初始化。感谢theraneman的输入!这确实是一个mootools/ie错误。您必须使用内联样式。阅读我下面的回答。你建议使用整个库来实现一个小小的css()函数?他已经在使用MooTools了。。。因此,使用JQuery毫无意义。MooTools或PrototypeJS;)IE不支持背景位置xTried出于好奇,但他们仍然会使IE8崩溃。这是很有用的,尽管我最近做了一个精灵动画,它确实在一个带有外部样式表和mootools的块元素上读到了这一点,但还没有出现过这样的问题。也许我很幸运;)@Dimitar,也许您在获取CSS之前通过javascript设置了CSS。这样我就可以工作了。在我的构造中,我必须先阅读背景位置,然后再将其设置为新值。这是casa吗?是的,它是通过新元素和有效初始值完全构造到DOM中的元素。但是,后续更改是在读取之后进行的。既然您提到了它,IE也有一些类似的解决方法-例如,将元素转换为overflow:hidden层中的内联元素,当您需要块时可能会令人沮丧。。。
if (Browser.Engine.trident){
var xy = el.getStyle('background-position-x')+" "+el.getStyle('background-position-y');
} else {
var xy = el.getStyle("backgroundPosition");
}