server-side browser detection? node.js
var ua = request.headers['user-agent'], $ = {};if (/mobile/i.test(ua)) $.Mobile = true;if (/like Mac OS X/.test(ua)) { $.iOS = /CPU( iPhone)? OS ([0-9\._]+) like Mac OS X/.exec(ua)[2].replace(/_/g, '.'); $.iPhone = /iPhone/.test(ua); $.iPad = /iPad/.test(ua);}if (/Android/.test(ua)) $.Android = /Android ([0-9\.]+)[\);]/.exec(ua)[1];if (/webOS\//.test(ua)) $.webOS = /webOS\/([0-9\.]+)[\);]/.exec(ua)[1];if (/(Intel|PPC) Mac OS X/.test(ua)) $.Mac = /(Intel|PPC) Mac OS X ?([0-9\._]*)[\)\;]/.exec(ua)[2].replace(/_/g, '.') || true;if (/Windows NT/.test(ua)) $.Windows = /Windows NT ([0-9\._]+)[\);]/.exec(ua)[1];
That should work for you. Just put it in your response handler.
The ua-parser library for node (npm install ua-parser
) exposes a big set of regexes for browser user-agent strings. I'd strongly recommend it for your needs.
I threw this together using ua-parser-js. I'm sure it can be improved but it's functional.
Install the package:
sudo npm install ua-parser-js
In your routes file require UAParser:
var UAParser = require('ua-parser-js');
Do some stuff with it:
function ensureLatestBrowser(req, res, next) { var parser = new UAParser(); var ua = req.headers['user-agent']; var browserName = parser.setUA(ua).getBrowser().name; var fullBrowserVersion = parser.setUA(ua).getBrowser().version; var browserVersion = fullBrowserVersion.split(".",1).toString(); var browserVersionNumber = Number(browserVersion); if (browserName == 'IE' && browserVersion <= 9) res.redirect('/update/'); else if (browserName == 'Firefox' && browserVersion <= 24) res.redirect('/update/'); else if (browserName == 'Chrome' && browserVersion <= 29) res.redirect('/update/'); else if (browserName == 'Canary' && browserVersion <= 32) res.redirect('/update/'); else if (browserName == 'Safari' && browserVersion <= 5) res.redirect('/update/'); else if (browserName == 'Opera' && browserVersion <= 16) res.redirect('/update/'); else return next();}
and then in your route just call:
app.all(/^(?!(\/update)).*$/, ensureLatestBrowser);
If you want to see what other information you can get with UAParser check out their demo page.