source: Dev/trunk/src/client/dojo/uacss.js @ 529

Last change on this file since 529 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 2.0 KB
Line 
1define(["./dom-geometry", "./_base/lang", "./domReady", "./sniff", "./_base/window"],
2        function(geometry, lang, domReady, has, baseWindow){
3
4        // module:
5        //              dojo/uacss
6
7        /*=====
8        return {
9                // summary:
10                //              Applies pre-set CSS classes to the top-level HTML node, based on:
11                //
12                //              - browser (ex: dj_ie)
13                //              - browser version (ex: dj_ie6)
14                //              - box model (ex: dj_contentBox)
15                //              - text direction (ex: dijitRtl)
16                //
17                //              In addition, browser, browser version, and box model are
18                //              combined with an RTL flag when browser text is RTL. ex: dj_ie-rtl.
19                //
20                //              Returns the has() method.
21        };
22        =====*/
23
24        var
25                html = baseWindow.doc.documentElement,
26                ie = has("ie"),
27                opera = has("opera"),
28                maj = Math.floor,
29                ff = has("ff"),
30                boxModel = geometry.boxModel.replace(/-/,''),
31
32                classes = {
33                        "dj_quirks": has("quirks"),
34
35                        // NOTE: Opera not supported by dijit
36                        "dj_opera": opera,
37
38                        "dj_khtml": has("khtml"),
39
40                        "dj_webkit": has("webkit"),
41                        "dj_safari": has("safari"),
42                        "dj_chrome": has("chrome"),
43
44                        "dj_gecko": has("mozilla"),
45
46                        "dj_ios": has("ios"),
47                        "dj_android": has("android")
48                }; // no dojo unsupported browsers
49
50        if(ie){
51                classes["dj_ie"] = true;
52                classes["dj_ie" + maj(ie)] = true;
53                classes["dj_iequirks"] = has("quirks");
54        }
55        if(ff){
56                classes["dj_ff" + maj(ff)] = true;
57        }
58
59        classes["dj_" + boxModel] = true;
60
61        // apply browser, browser version, and box model class names
62        var classStr = "";
63        for(var clz in classes){
64                if(classes[clz]){
65                        classStr += clz + " ";
66                }
67        }
68        html.className = lang.trim(html.className + " " + classStr);
69
70        // If RTL mode, then add dj_rtl flag plus repeat existing classes with -rtl extension.
71        // We can't run the code below until the <body> tag has loaded (so we can check for dir=rtl).
72        domReady(function(){
73                if(!geometry.isBodyLtr()){
74                        var rtlClassStr = "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl ");
75                        html.className = lang.trim(html.className + " " + rtlClassStr + "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl "));
76                }
77        });
78        return has;
79});
Note: See TracBrowser for help on using the repository browser.