2
schangxiang@126.com
2024-08-16 b47c50a2a514def7374b32d7194b2c599cba5625
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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 optmization) 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 ].contentWindow || iframe[ 0 ].contentDocument ).document;
 
            // Support: IE
            doc.write();
            doc.close();
 
            display = actualDisplay( nodeName, doc );
            iframe.detach();
        }
 
        // Store the correct default display
        elemdisplay[ nodeName ] = display;
    }
 
    return display;
}
 
return defaultDisplay;
});