]> git.wh0rd.org - tt-rss.git/blob - lib/dojo/_base/sniff.js.uncompressed.js
make precache_headlines_idle() start slower
[tt-rss.git] / lib / dojo / _base / sniff.js.uncompressed.js
1 define("dojo/_base/sniff", ["./kernel", "../has"], function(dojo, has){
2 // module:
3 // dojo/sniff
4 // summary:
5 // This module populates the dojo browser version sniffing properties.
6
7 if(!1){
8 return has;
9 }
10
11 dojo.isBrowser = true,
12 dojo._name = "browser";
13
14 var hasAdd = has.add,
15 n = navigator,
16 dua = n.userAgent,
17 dav = n.appVersion,
18 tv = parseFloat(dav),
19 isOpera,
20 isAIR,
21 isKhtml,
22 isWebKit,
23 isChrome,
24 isMac,
25 isSafari,
26 isMozilla ,
27 isMoz,
28 isIE,
29 isFF,
30 isQuirks,
31 isIos,
32 isAndroid,
33 isWii;
34
35 /*=====
36 dojo.isBrowser = {
37 // example:
38 // | if(dojo.isBrowser){ ... }
39 };
40
41 dojo.isFF = {
42 // example:
43 // | if(dojo.isFF > 1){ ... }
44 };
45
46 dojo.isIE = {
47 // example:
48 // | if(dojo.isIE > 6){
49 // | // we are IE7
50 // | }
51 };
52
53 dojo.isSafari = {
54 // example:
55 // | if(dojo.isSafari){ ... }
56 // example:
57 // Detect iPhone:
58 // | if(dojo.isSafari && navigator.userAgent.indexOf("iPhone") != -1){
59 // | // we are iPhone. Note, iPod touch reports "iPod" above and fails this test.
60 // | }
61 };
62
63 dojo.mixin(dojo, {
64 // isBrowser: Boolean
65 // True if the client is a web-browser
66 isBrowser: true,
67 // isFF: Number | undefined
68 // Version as a Number if client is FireFox. undefined otherwise. Corresponds to
69 // major detected FireFox version (1.5, 2, 3, etc.)
70 isFF: 2,
71 // isIE: Number | undefined
72 // Version as a Number if client is MSIE(PC). undefined otherwise. Corresponds to
73 // major detected IE version (6, 7, 8, etc.)
74 isIE: 6,
75 // isKhtml: Number | undefined
76 // Version as a Number if client is a KHTML browser. undefined otherwise. Corresponds to major
77 // detected version.
78 isKhtml: 0,
79 // isWebKit: Number | undefined
80 // Version as a Number if client is a WebKit-derived browser (Konqueror,
81 // Safari, Chrome, etc.). undefined otherwise.
82 isWebKit: 0,
83 // isMozilla: Number | undefined
84 // Version as a Number if client is a Mozilla-based browser (Firefox,
85 // SeaMonkey). undefined otherwise. Corresponds to major detected version.
86 isMozilla: 0,
87 // isOpera: Number | undefined
88 // Version as a Number if client is Opera. undefined otherwise. Corresponds to
89 // major detected version.
90 isOpera: 0,
91 // isSafari: Number | undefined
92 // Version as a Number if client is Safari or iPhone. undefined otherwise.
93 isSafari: 0,
94 // isChrome: Number | undefined
95 // Version as a Number if client is Chrome browser. undefined otherwise.
96 isChrome: 0,
97 // isMac: Boolean
98 // True if the client runs on Mac
99 isMac: 0,
100 // isIos: Boolean
101 // True if client is iPhone, iPod, or iPad
102 isIos: 0,
103 // isAndroid: Number | undefined
104 // Version as a Number if client is android browser. undefined otherwise.
105 isAndroid: 0,
106 // isWii: Boolean
107 // True if client is Wii
108 isWii: 0
109 });
110 =====*/
111
112 // fill in the rendering support information in dojo.render.*
113 if(dua.indexOf("AdobeAIR") >= 0){ isAIR = 1; }
114 isKhtml = (dav.indexOf("Konqueror") >= 0) ? tv : 0;
115 isWebKit = parseFloat(dua.split("WebKit/")[1]) || undefined;
116 isChrome = parseFloat(dua.split("Chrome/")[1]) || undefined;
117 isMac = dav.indexOf("Macintosh") >= 0;
118 isIos = /iPhone|iPod|iPad/.test(dua);
119 isAndroid = parseFloat(dua.split("Android ")[1]) || undefined;
120 isWii = typeof opera != "undefined" && opera.wiiremote;
121
122 // safari detection derived from:
123 // http://developer.apple.com/internet/safari/faq.html#anchor2
124 // http://developer.apple.com/internet/safari/uamatrix.html
125 var index = Math.max(dav.indexOf("WebKit"), dav.indexOf("Safari"), 0);
126 if(index && !isChrome){
127 // try to grab the explicit Safari version first. If we don't get
128 // one, look for less than 419.3 as the indication that we're on something
129 // "Safari 2-ish".
130 isSafari = parseFloat(dav.split("Version/")[1]);
131 if(!isSafari || parseFloat(dav.substr(index + 7)) <= 419.3){
132 isSafari = 2;
133 }
134 }
135
136 if (!has("dojo-webkit")) {
137 if(dua.indexOf("Opera") >= 0){
138 isOpera = tv;
139 // see http://dev.opera.com/articles/view/opera-ua-string-changes and http://www.useragentstring.com/pages/Opera/
140 // 9.8 has both styles; <9.8, 9.9 only old style
141 if(isOpera >= 9.8){
142 isOpera = parseFloat(dua.split("Version/")[1]) || tv;
143 }
144 }
145
146 if(dua.indexOf("Gecko") >= 0 && !isKhtml && !isWebKit){
147 isMozilla = isMoz = tv;
148 }
149 if(isMoz){
150 //We really need to get away from this. Consider a sane isGecko approach for the future.
151 isFF = parseFloat(dua.split("Firefox/")[1] || dua.split("Minefield/")[1]) || undefined;
152 }
153 if(document.all && !isOpera){
154 isIE = parseFloat(dav.split("MSIE ")[1]) || undefined;
155 //In cases where the page has an HTTP header or META tag with
156 //X-UA-Compatible, then it is in emulation mode.
157 //Make sure isIE reflects the desired version.
158 //document.documentMode of 5 means quirks mode.
159 //Only switch the value if documentMode's major version
160 //is different from isIE's major version.
161 var mode = document.documentMode;
162 if(mode && mode != 5 && Math.floor(isIE) != mode){
163 isIE = mode;
164 }
165 }
166 }
167
168 isQuirks = document.compatMode == "BackCompat";
169
170 hasAdd("opera", dojo.isOpera = isOpera);
171 hasAdd("air", dojo.isAIR = isAIR);
172 hasAdd("khtml", dojo.isKhtml = isKhtml);
173 hasAdd("webkit", dojo.isWebKit = isWebKit);
174 hasAdd("chrome", dojo.isChrome = isChrome);
175 hasAdd("mac", dojo.isMac = isMac );
176 hasAdd("safari", dojo.isSafari = isSafari);
177 hasAdd("mozilla", dojo.isMozilla = dojo.isMoz = isMozilla );
178 hasAdd("ie", dojo.isIE = isIE );
179 hasAdd("ff", dojo.isFF = isFF);
180 hasAdd("quirks", dojo.isQuirks = isQuirks);
181 hasAdd("ios", dojo.isIos = isIos);
182 hasAdd("android", dojo.isAndroid = isAndroid);
183
184 dojo.locale = dojo.locale || (isIE ? n.userLanguage : n.language).toLowerCase();
185
186 return has;
187 });