scratch – Blame information for rev 125

Subversion Repositories:
Rev:
Rev Author Line No. Line
125 office 1 define([
2 "../core",
3 "../manipulation" // appendTo
4 ], function( jQuery ) {
5  
6 var iframe,
7 elemdisplay = {};
8  
9 /**
10 * Retrieve the actual display of a element
11 * @param {String} name nodeName of the element
12 * @param {Object} doc Document object
13 */
14 // Called only from within defaultDisplay
15 function actualDisplay( name, doc ) {
16 var style,
17 elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
18  
19 // getDefaultComputedStyle might be reliably used only on attached element
20 display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
21  
22 // Use of this method is a temporary fix (more like optimization) until something better comes along,
23 // since it was removed from specification and supported only in FF
24 style.display : jQuery.css( elem[ 0 ], "display" );
25  
26 // We don't have any data stored on the element,
27 // so use "detach" method as fast way to get rid of the element
28 elem.detach();
29  
30 return display;
31 }
32  
33 /**
34 * Try to determine the default display value of an element
35 * @param {String} nodeName
36 */
37 function defaultDisplay( nodeName ) {
38 var doc = document,
39 display = elemdisplay[ nodeName ];
40  
41 if ( !display ) {
42 display = actualDisplay( nodeName, doc );
43  
44 // If the simple way fails, read from inside an iframe
45 if ( display === "none" || !display ) {
46  
47 // Use the already-created iframe if possible
48 iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
49  
50 // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
51 doc = iframe[ 0 ].contentDocument;
52  
53 // Support: IE
54 doc.write();
55 doc.close();
56  
57 display = actualDisplay( nodeName, doc );
58 iframe.detach();
59 }
60  
61 // Store the correct default display
62 elemdisplay[ nodeName ] = display;
63 }
64  
65 return display;
66 }
67  
68 return defaultDisplay;
69  
70 });