Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE8在getStyle背景位置崩溃_Javascript_Internet Explorer 8_Mootools - Fatal编程技术网

Javascript IE8在getStyle背景位置崩溃

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

我在InternetExplorer8中发现了一个奇怪的bug。也许有人能帮我搬过去

当我试图获取元素的背景位置时,使用
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");
    }