mirror of
https://github.com/lancedikson/bowser
synced 2026-03-02 03:40:27 +00:00
refactored detection for firefox/seamonkey/plain gecko to conform to the way other browsers are detected, added version information in case unknown gecko/webkit browser is detected, added detection+tests+docs for sailfish browser
This commit is contained in:
@@ -62,22 +62,28 @@
|
||||
result.version = versionIdentifier
|
||||
}
|
||||
}
|
||||
else if (/gecko\//i.test(ua)) {
|
||||
else if (/sailfish/i.test(ua)) {
|
||||
result = {
|
||||
name: 'Gecko'
|
||||
, gecko: t
|
||||
name: 'Sailfish'
|
||||
, sailfish: t
|
||||
, version: getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i)
|
||||
}
|
||||
}
|
||||
else if (/seamonkey\//i.test(ua)) {
|
||||
result = {
|
||||
name: 'SeaMonkey'
|
||||
, seamonkey: t
|
||||
, version: getFirstMatch(/seamonkey\/(\d+(\.\d+)?)/i)
|
||||
}
|
||||
}
|
||||
else if (/firefox|iceweasel/i.test(ua)) {
|
||||
result = {
|
||||
name: 'Firefox'
|
||||
, firefox: t
|
||||
, version: getFirstMatch(/(?:firefox|iceweasel)[ \/](\d+(\.\d+)?)/i)
|
||||
}
|
||||
if (/seamonkey\//i.test(ua)) {
|
||||
result.name = 'SeaMonkey'
|
||||
result.seamonkey = t
|
||||
result.version = getFirstMatch(/seamonkey\/(\d+(\.\d+)?)/i)
|
||||
} else if (/firefox|iceweasel/i.test(ua)) {
|
||||
result.name = 'Firefox'
|
||||
result.firefox = t
|
||||
if (/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(ua)) {
|
||||
result.firefoxos = t
|
||||
}
|
||||
if (/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(ua)) {
|
||||
result.firefoxos = t
|
||||
}
|
||||
}
|
||||
else if (/silk/i.test(ua)) {
|
||||
@@ -138,9 +144,17 @@
|
||||
}
|
||||
else result = {}
|
||||
|
||||
// set webkit flag for webkit-based browsers
|
||||
// set webkit or gecko flag for browsers based on these engines
|
||||
if (/(apple)?webkit/i.test(ua)) {
|
||||
result.name = result.name || "Webkit"
|
||||
result.webkit = t
|
||||
if (!result.version && versionIdentifier) {
|
||||
result.version = versionIdentifier
|
||||
}
|
||||
} else if (!result.opera && /gecko\//i.test(ua)) {
|
||||
result.name = result.name || "Gecko"
|
||||
result.gecko = t
|
||||
result.version = result.version || getFirstMatch(/gecko\/(\d+(\.\d+)?)/i)
|
||||
}
|
||||
|
||||
// set OS flags for platforms that have multiple browsers
|
||||
|
||||
@@ -907,6 +907,22 @@ module.exports.useragents = {
|
||||
, x: true
|
||||
}
|
||||
}
|
||||
, Sailfish: {
|
||||
'Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:26.0) Gecko/26.0 Firefox/26.0 SailfishBrowser/1.0 like Safari/538.1': {
|
||||
sailfish: true
|
||||
, gecko: true
|
||||
, version: '1.0'
|
||||
, mobile: true
|
||||
, x: true
|
||||
}
|
||||
, 'Mozilla/5.0 (Linux; U; Jolla; Sailfish; Mobile; rv:20.0) Gecko/20.0 Firefox/20.0 Sailfish Browser/1.0 like Safari/535.19': {
|
||||
sailfish: true
|
||||
, gecko: true
|
||||
, version: '1.0'
|
||||
, mobile: true
|
||||
, x: true
|
||||
}
|
||||
}
|
||||
, PhantomJS: {
|
||||
'Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.5.0 Safari/534.34': {
|
||||
phantom: true
|
||||
|
||||
Reference in New Issue
Block a user