Skip to content

Instantly share code, notes, and snippets.

@steida
Created March 26, 2009 13:49
Show Gist options
  • Save steida/86101 to your computer and use it in GitHub Desktop.
Save steida/86101 to your computer and use it in GitHub Desktop.
// mootools browser.js
//
// "We've been the only framework using object detection since the beginning,
// but we only used it to set some Browser.Engine flags... which is IMO pretty lame." tomocchino
//
// Example: if (Browser.ie > 7) {..
@@ -34,13 +34,22 @@ var Browser = $merge({
return (document.getBoxObjectFor == undefined) ? false : ((document.getElementsByClassName) ? 19 : 18);
}
+ },
+
+ // check for the minor browsers first
+ Browsers: {
+ opera: /opera[\s\/]([^\s]*)/,
+ ie: /msie\s([^;]*)/,
+ ff: /firefox\/([^\s]*)/,
+ chrome: /chrome\/([^\s]*)/,
+ safari: /safari\/([^\s]*)/
}
}, Browser || {});
Browser.Platform[Browser.Platform.name] = true;
-Browser.detect = function(){
+Browser.detect = function(ua){
for (var engine in this.Engines){
var version = this.Engines[engine]();
@@ -50,12 +59,19 @@ Browser.detect = function(){
break;
}
}
-
- return {name: engine, version: version};
+
+ for (var browser in this.Browsers){
+ var m = ua.match(this.Browsers[browser]), version = m && m[1];
+ if (version) {
+ this.Name = browser;
+ this[browser] = parseFloat(version);
+ break;
+ }
+ }
};
-Browser.detect();
+Browser.detect(navigator.userAgent.toLowerCase());
Browser.Request = function(){
return $try(function(){
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment