70 lines
2.3 KiB
JavaScript
70 lines
2.3 KiB
JavaScript
define("dojo/sniff", ["./has"], function(has){
|
|
// module:
|
|
// dojo/sniff
|
|
|
|
/*=====
|
|
return function(){
|
|
// summary:
|
|
// This module sets has() flags based on the current browser.
|
|
// It returns the has() function.
|
|
};
|
|
=====*/
|
|
|
|
if( 1 ){
|
|
var n = navigator,
|
|
dua = n.userAgent,
|
|
dav = n.appVersion,
|
|
tv = parseFloat(dav);
|
|
|
|
has.add("air", dua.indexOf("AdobeAIR") >= 0),
|
|
has.add("khtml", dav.indexOf("Konqueror") >= 0 ? tv : undefined);
|
|
has.add("webkit", parseFloat(dua.split("WebKit/")[1]) || undefined);
|
|
has.add("chrome", parseFloat(dua.split("Chrome/")[1]) || undefined);
|
|
has.add("safari", dav.indexOf("Safari")>=0 && !has("chrome") ? parseFloat(dav.split("Version/")[1]) : undefined);
|
|
has.add("mac", dav.indexOf("Macintosh") >= 0);
|
|
has.add("quirks", document.compatMode == "BackCompat");
|
|
has.add("ios", /iPhone|iPod|iPad/.test(dua));
|
|
has.add("android", parseFloat(dua.split("Android ")[1]) || undefined);
|
|
|
|
if(!has("webkit")){
|
|
// Opera
|
|
if(dua.indexOf("Opera") >= 0){
|
|
// see http://dev.opera.com/articles/view/opera-ua-string-changes and http://www.useragentstring.com/pages/Opera/
|
|
// 9.8 has both styles; <9.8, 9.9 only old style
|
|
has.add("opera", tv >= 9.8 ? parseFloat(dua.split("Version/")[1]) || tv : tv);
|
|
}
|
|
|
|
// Mozilla and firefox
|
|
if(dua.indexOf("Gecko") >= 0 && !has("khtml") && !has("webkit")){
|
|
has.add("mozilla", tv);
|
|
}
|
|
if(has("mozilla")){
|
|
//We really need to get away from this. Consider a sane isGecko approach for the future.
|
|
has.add("ff", parseFloat(dua.split("Firefox/")[1] || dua.split("Minefield/")[1]) || undefined);
|
|
}
|
|
|
|
// IE
|
|
if(document.all && !has("opera")){
|
|
var isIE = parseFloat(dav.split("MSIE ")[1]) || undefined;
|
|
|
|
//In cases where the page has an HTTP header or META tag with
|
|
//X-UA-Compatible, then it is in emulation mode.
|
|
//Make sure isIE reflects the desired version.
|
|
//document.documentMode of 5 means quirks mode.
|
|
//Only switch the value if documentMode's major version
|
|
//is different from isIE's major version.
|
|
var mode = document.documentMode;
|
|
if(mode && mode != 5 && Math.floor(isIE) != mode){
|
|
isIE = mode;
|
|
}
|
|
|
|
has.add("ie", isIE);
|
|
}
|
|
|
|
// Wii
|
|
has.add("wii", typeof opera != "undefined" && opera.wiiremote);
|
|
}
|
|
}
|
|
|
|
return has;
|
|
});
|