La plupart des implémentations que j'ai vues concernent la détection du navigateur côté client. Je me demandais simplement s'il était possible de détecter le navigateur avant d'envoyer des ressources au client.
Merci.
La plupart des implémentations que j'ai vues concernent la détection du navigateur côté client. Je me demandais simplement s'il était possible de détecter le navigateur avant d'envoyer des ressources au client.
Merci.
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];
Cela devrait fonctionner pour vous. Mettez-le simplement dans votre gestionnaire de réponses.
La bibliothèque ua-parser pour le nœud ( npm install ua-parser
) expose un grand ensemble d'expressions régulières pour les chaînes d'agent utilisateur du navigateur. Je le recommande fortement pour vos besoins.
J'ai jeté cet ensemble à l'aide de l'ua-parser-js. Je suis sûr qu'il peut être amélioré, mais il est fonctionnel.
Installez le paquet:
sudo npm install ua-parser-js
Dans votre fichier de routes nécessitent UAParser:
var UAParser = require('ua-parser-js');
Faire des trucs avec elle:
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();
}
et puis dans votre parcours d'appel:
app.all(/^(?!(\/update)).*$/, ensureLatestBrowser);
Si vous voulez voir ce que les autres informations que vous pouvez obtenir avec UAParser découvrez leur page de démonstration.
Je voulais faire une simple redirection vers une version mobile de mon site, si l'agent utilisateur est assez fiable. Je voulais le faire côté serveur, donc je ne perds pas de temps de chargement inutile de css et de js sur le client. http://detectmobilebrowsers.com/ avait le plus robuste regex de match. Donc, j'ai jeté quelques exprimer middleware qui vous permettra de faire de la redirection de par le simple ajout de deux lignes de code à votre application.
npm install detectmobilebrowsers
installer
express = require 'express'
mobile = require 'detectmobilebrowsers'
app = express()
app.configure () ->
app.use mobile.redirect 'http://m.domain.com'
app.get '/', (req, res) ->
res.send 'Not on Mobile'
app.listen 3000
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.