yzt
2023-05-26 2f70f6727314edd84d8ec2bfe3ce832803f1ea77
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
70
71
72
73
74
75
76
77
78
79
define(["./dom-geometry", "./_base/lang", "./domReady", "./sniff", "./_base/window"],
    function(geometry, lang, domReady, has, baseWindow){
 
    // module:
    //      dojo/uacss
 
    /*=====
    return {
        // summary:
        //      Applies pre-set CSS classes to the top-level HTML node, based on:
        //
        //      - browser (ex: dj_ie)
        //      - browser version (ex: dj_ie6)
        //      - box model (ex: dj_contentBox)
        //      - text direction (ex: dijitRtl)
        //
        //      In addition, browser, browser version, and box model are
        //      combined with an RTL flag when browser text is RTL. ex: dj_ie-rtl.
        //
        //      Returns the has() method.
    };
    =====*/
 
    var
        html = baseWindow.doc.documentElement,
        ie = has("ie"),
        opera = has("opera"),
        maj = Math.floor,
        ff = has("ff"),
        boxModel = geometry.boxModel.replace(/-/,''),
 
        classes = {
            "dj_quirks": has("quirks"),
 
            // NOTE: Opera not supported by dijit
            "dj_opera": opera,
 
            "dj_khtml": has("khtml"),
 
            "dj_webkit": has("webkit"),
            "dj_safari": has("safari"),
            "dj_chrome": has("chrome"),
 
            "dj_gecko": has("mozilla"),
 
            "dj_ios": has("ios"),
            "dj_android": has("android")
        }; // no dojo unsupported browsers
 
    if(ie){
        classes["dj_ie"] = true;
        classes["dj_ie" + maj(ie)] = true;
        classes["dj_iequirks"] = has("quirks");
    }
    if(ff){
        classes["dj_ff" + maj(ff)] = true;
    }
 
    classes["dj_" + boxModel] = true;
 
    // apply browser, browser version, and box model class names
    var classStr = "";
    for(var clz in classes){
        if(classes[clz]){
            classStr += clz + " ";
        }
    }
    html.className = lang.trim(html.className + " " + classStr);
 
    // If RTL mode, then add dj_rtl flag plus repeat existing classes with -rtl extension.
    // We can't run the code below until the <body> tag has loaded (so we can check for dir=rtl).
    domReady(function(){
        if(!geometry.isBodyLtr()){
            var rtlClassStr = "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl ");
            html.className = lang.trim(html.className + " " + rtlClassStr + "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl "));
        }
    });
    return has;
});