browser-info
Advanced tools
Comparing version 0.4.0 to 0.5.0
32
index.js
@@ -11,4 +11,5 @@ /* globals navigator*/ | ||
var match = ua.match(/(opera|chrome|safari|firefox|edge|trident(?=\/))\/?\s*(\d+)/i) || []; | ||
var match = ua.match(/(opera|chrome|safari|firefox|edge|trident(?=\/))\/?\s*?(\d+)/i) || []; | ||
if (ua.indexOf('Win') !== -1) { | ||
@@ -27,3 +28,3 @@ os = 'Windows'; | ||
if (ua.indexOf('Android') !== -1) { | ||
os = 'Android'; | ||
os = 'Android'; | ||
} | ||
@@ -34,5 +35,14 @@ if (/iPad|iPhone|iPod/.test(ua)) { | ||
if (ua.indexOf('Windows Phone') !== -1) { | ||
os = 'Windows Phone'; | ||
os = 'Windows Phone'; | ||
} | ||
tem = ua.match(/\bIEMobile\/(\d+)/); | ||
if (tem !== null) { | ||
return { | ||
name: 'IEMobile', | ||
version: (tem[1]||''), | ||
os: os | ||
}; | ||
} | ||
if (/trident/i.test(match[1])) { | ||
@@ -46,10 +56,3 @@ tem = /\brv[ :]+(\d+)/g.exec(ua) || []; | ||
} | ||
if (match[1] === 'MSIE') { | ||
tem = /\brv[ :]+(\d+)/g.exec(ua) || []; | ||
return { | ||
name: 'IEMobile', | ||
version: (tem[1]||''), | ||
os: os | ||
}; | ||
} | ||
if (match[1] === 'Chrome') { | ||
@@ -75,4 +78,7 @@ tem = ua.match(/\bOPR\/(\d+)/); | ||
match = match[2]? [match[1], match[2]]: [navigator.appName, navigator.appVersion, '-?']; | ||
if ((tem = ua.match(/version\/(\d+)/i)) !== null) { | ||
match.splice(1, 1, tem[1]); | ||
if (match[0] !== 'Chrome') { | ||
var tem = ua.match(/version\/(\d+)/i) | ||
if (tem !== null && tem !== '') { | ||
match.splice(1, 1, tem[1]); | ||
} | ||
} | ||
@@ -79,0 +85,0 @@ return { |
{ | ||
"name": "browser-info", | ||
"version": "0.4.0", | ||
"version": "0.5.0", | ||
"description": "Get browser info", | ||
@@ -5,0 +5,0 @@ "author": "Steve Lacy <me@slacy.me> (http://slacy.me)", |
@@ -9,3 +9,3 @@ 'use strict'; | ||
it('should return info', function(done) { | ||
GLOBAL.navigator = { | ||
global.navigator = { | ||
userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.68 Safari/537.36', | ||
@@ -21,14 +21,18 @@ }; | ||
it('should detect Android', function(done) { | ||
GLOBAL.navigator = { | ||
userAgent: 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36' | ||
}; | ||
should(info().os).equal('Android'); | ||
done(); | ||
global.navigator = { | ||
userAgent: 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36' | ||
}; | ||
should(info().os).equal('Android'); | ||
should(info().name).equal('Chrome'); | ||
should(info().version).equal('48'); | ||
done(); | ||
}); | ||
it('should detect iOS', function(done) { | ||
GLOBAL.navigator = { | ||
userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1' | ||
global.navigator = { | ||
userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1' | ||
}; | ||
should(info().os).equal('iOS'); | ||
should(info().name).equal('Safari'); | ||
should(info().version).equal('9'); | ||
done(); | ||
@@ -38,28 +42,41 @@ }); | ||
it('should detect Edge', function(done) { | ||
GLOBAL.navigator = { | ||
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/13' | ||
}; | ||
global.navigator = { | ||
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/13' | ||
}; | ||
should(info().name).equal('Edge'); | ||
done(); | ||
should(info().os).equal('Windows'); | ||
should(info().name).equal('Edge'); | ||
should(info().version).equal('13'); | ||
done(); | ||
}); | ||
it('should detect IE mobile', function(done) { | ||
GLOBAL.navigator = { | ||
userAgent: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)' | ||
}; | ||
global.navigator = { | ||
userAgent: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)' | ||
}; | ||
should(info().os).equal('Windows Phone'); | ||
should(info().name).equal('IE'); | ||
done(); | ||
should(info().os).equal('Windows Phone'); | ||
should(info().name).equal('IEMobile'); | ||
should(info().version).equal('9'); | ||
done(); | ||
}); | ||
it('should detect IE', function(done) { | ||
GLOBAL.navigator = { | ||
userAgent: 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko' | ||
}; | ||
global.navigator = { | ||
userAgent: 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko' | ||
}; | ||
should(info().name).equal('IE'); | ||
done(); | ||
should(info().name).equal('IE'); | ||
done(); | ||
}); | ||
it('should detect edge cases', function(done) { | ||
global.navigator = { | ||
userAgent: 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36 Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10' | ||
}; | ||
should(info().name).equal('Chrome'); | ||
should(info().version).equal('34'); | ||
done(); | ||
}); | ||
}); |
6861
141