Opera doesn't give height/width of display: none elements with getComputedStyle but...
authorjeresig <jeresig@gmail.com>
Wed, 3 Nov 2010 19:39:28 +0000 (15:39 -0400)
committerjeresig <jeresig@gmail.com>
Wed, 3 Nov 2010 19:39:28 +0000 (15:39 -0400)
src/css.js

index 0998657..0f14914 100644 (file)
@@ -12,8 +12,8 @@ var ralpha = /alpha\([^)]*\)/i,
        cssHeight = [ "Top", "Bottom" ],
        curCSS,
 
-       // cache check for defaultView.getComputedStyle
-       getComputedStyle = document.defaultView && document.defaultView.getComputedStyle,
+       getComputedStyle,
+       currentStyle,
 
        fcamelCase = function( all, letter ) {
                return letter.toUpperCase();
@@ -172,6 +172,10 @@ jQuery.each(["height", "width"], function( i, name ) {
                                if ( val <= 0 ) {
                                        val = curCSS( elem, name, name );
 
+                                       if ( val === "0px" && currentStyle ) {
+                                               val = currentStyle( elem, name, name );
+                                       }
+
                                        if ( val != null ) {
                                                return val;
                                        }
@@ -231,8 +235,8 @@ if ( !jQuery.support.opacity ) {
        };
 }
 
-if ( getComputedStyle ) {
-       curCSS = function( elem, newName, name ) {
+if ( document.defaultView && document.defaultView.getComputedStyle ) {
+       getComputedStyle = function( elem, newName, name ) {
                var ret, defaultView, computedStyle;
 
                name = name.replace( rupper, "-$1" ).toLowerCase();
@@ -250,9 +254,10 @@ if ( getComputedStyle ) {
 
                return ret === "" ? "auto" : ret;
        };
+}
 
-} else if ( document.documentElement.currentStyle ) {
-       curCSS = function( elem, name ) {
+if ( document.documentElement.currentStyle ) {
+       currentStyle = function( elem, name ) {
                var left, rsLeft, ret = elem.currentStyle && elem.currentStyle[ name ], style = elem.style;
 
                // From the awesome hack by Dean Edwards
@@ -279,6 +284,8 @@ if ( getComputedStyle ) {
        };
 }
 
+curCSS = getComputedStyle || currentStyle;
+
 function getWH( elem, name, extra ) {
        var which = name === "width" ? cssWidth : cssHeight,
                val = name === "width" ? elem.offsetWidth : elem.offsetHeight;