我所见过的大多数实现都是针对客户端的浏览器检测。我只是想知道是否有可能在向客户端发送任何资源之前进行浏览器检测。
谢谢。
发布于 2011-05-29 02:10:18
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];
这对你来说应该是可行的。只需将其放入您的响应处理程序中。
发布于 2011-09-30 01:09:24
node的ua-parser库(npm install ua-parser
)公开了一大组浏览器用户代理字符串的正则表达式。我强烈建议您使用它来满足您的需求。
发布于 2014-01-01 04:44:21
这是我用ua-parser-js拼凑起来的。我相信它是可以改进的,但它是有功能的。
安装程序包:
sudo npm install ua-parser-js
在需要UAParser路由文件中:
var UAParser = require('ua-parser-js');
用它做一些事情:
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();
}
然后在你的路线中只需呼叫:
app.all(/^(?!(\/update)).*$/, ensureLatestBrowser);
如果您想了解使用UAParser还可以获得哪些其他信息,请查看他们的demo page.
https://stackoverflow.com/questions/6163350
复制相似问题