/bower_components/jquery/src/css/defaultDisplay.js |
@@ -0,0 +1,70 @@ |
define([ |
"../core", |
"../manipulation" // appendTo |
], function( jQuery ) { |
|
var iframe, |
elemdisplay = {}; |
|
/** |
* Retrieve the actual display of a element |
* @param {String} name nodeName of the element |
* @param {Object} doc Document object |
*/ |
// Called only from within defaultDisplay |
function actualDisplay( name, doc ) { |
var style, |
elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), |
|
// getDefaultComputedStyle might be reliably used only on attached element |
display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? |
|
// Use of this method is a temporary fix (more like optimization) until something better comes along, |
// since it was removed from specification and supported only in FF |
style.display : jQuery.css( elem[ 0 ], "display" ); |
|
// We don't have any data stored on the element, |
// so use "detach" method as fast way to get rid of the element |
elem.detach(); |
|
return display; |
} |
|
/** |
* Try to determine the default display value of an element |
* @param {String} nodeName |
*/ |
function defaultDisplay( nodeName ) { |
var doc = document, |
display = elemdisplay[ nodeName ]; |
|
if ( !display ) { |
display = actualDisplay( nodeName, doc ); |
|
// If the simple way fails, read from inside an iframe |
if ( display === "none" || !display ) { |
|
// Use the already-created iframe if possible |
iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement ); |
|
// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse |
doc = iframe[ 0 ].contentDocument; |
|
// Support: IE |
doc.write(); |
doc.close(); |
|
display = actualDisplay( nodeName, doc ); |
iframe.detach(); |
} |
|
// Store the correct default display |
elemdisplay[ nodeName ] = display; |
} |
|
return display; |
} |
|
return defaultDisplay; |
|
}); |