From 601eac689798c1e7ea3bac253123f6576828f6a3 Mon Sep 17 00:00:00 2001 From: Martino di Filippo Date: Thu, 27 Jun 2013 19:41:01 +0200 Subject: [PATCH 1/2] Avoid exception when unable to match UA Make detect() return an empty object if it hasn't matched any known browser, so that graded browser support (and any external code using this library) doesn't raise a "Cannot read property ... of undefined" exception --- src/bowser.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bowser.js b/src/bowser.js index 3b81fc5..0059b88 100644 --- a/src/bowser.js +++ b/src/bowser.js @@ -90,6 +90,7 @@ seamonkey: t , version: ua.match(/seamonkey\/(\d+(\.\d+)?)/i)[1] } + return {} } var bowser = detect() From 7fa03f95452f73a6c087523c25c9d33cc6118eb3 Mon Sep 17 00:00:00 2001 From: Martino di Filippo Date: Thu, 27 Jun 2013 19:43:34 +0200 Subject: [PATCH 2/2] Add IE11 support Match IE by looking for either "MSIE" or "Trident" Read the new "rv:x.y" version number --- src/bowser.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/bowser.js b/src/bowser.js index 0059b88..cc7da75 100644 --- a/src/bowser.js +++ b/src/bowser.js @@ -9,6 +9,7 @@ * Opera: "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.7; U; en) Presto/2.7.62 Version/11.01" * Safari: "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1" * IE: "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)" + * IE>=11: "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; Media Center PC 6.0; rv:11.0) like Gecko" * Firefox: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0) Gecko/20100101 Firefox/4.0" * iPhone: "Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5" * iPad: "Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5", @@ -18,7 +19,7 @@ var ua = navigator.userAgent , t = true - , ie = /msie/i.test(ua) + , ie = /(msie|trident)/i.test(ua) , chrome = /chrome/i.test(ua) , safari = /safari/i.test(ua) && !chrome , iphone = /iphone/i.test(ua) @@ -36,7 +37,7 @@ if (ie) return { msie: t - , version: ua.match(/msie (\d+(\.\d+)?);/i)[1] + , version: ua.match(/(msie |rv:)(\d+(\.\d+)?)/i)[2] } if (chrome) return { webkit: t