From 81de96af740f8d397585d8a6fc2a3765dfd16d49 Mon Sep 17 00:00:00 2001 From: rwldrn Date: Tue, 12 Apr 2011 17:27:45 -0400 Subject: [PATCH] Fixes #8099 using iframe to capture an element's real default display; suggested by lrbabe/louisremi --- src/effects.js | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/src/effects.js b/src/effects.js index e7987d21..bdd0715e 100644 --- a/src/effects.js +++ b/src/effects.js @@ -548,35 +548,24 @@ if ( jQuery.expr && jQuery.expr.filters ) { } function defaultDisplay( nodeName ) { - var iframe, iframeDoc, iframeNode, display; if ( !elemdisplay[ nodeName ] ) { - iframe = defaultDisplay.iframe.clone()[ 0 ]; + var iframe, iframeDoc, iframeNode, display, elem; - iframe.style.display = "none"; + iframe = defaultDisplay.iframe.clone()[ 0 ]; document.body.appendChild( iframe ); - iframeDoc = iframe.contentWindow && iframe.contentWindow || - iframe.contentDocument.document && iframe.contentDocument.document || - iframe.contentDocument; + iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document; - iframeNode = jQuery( "<" + nodeName + ">" ).appendTo( jQuery( "body", iframeDoc.document ) ); + iframeDoc.open(); + iframeDoc.write(""); + elem = iframeDoc.createElement( nodeName ); + iframeDoc.body.appendChild( elem ); + iframeDoc.close(); - if ( !iframeNode.length ) { - // this will only occur in IE - iframeDoc.document.open(); - iframeDoc.document.write(""); - elem = iframeDoc.document.createElement( nodeName ); - iframeDoc.document.body.appendChild( elem ); - iframeDoc.document.close(); - - iframeNode = jQuery( elem ); - } - - // firefox returns undefined from css("display") - display = iframeNode.css("display") || iframeNode[ 0 ].style.display; + display = jQuery( elem ).css( "display" ); if ( display === "none" || display === "" ) { display = "block"; @@ -591,6 +580,12 @@ function defaultDisplay( nodeName ) { return elemdisplay[ nodeName ]; } -defaultDisplay.iframe = jQuery("