server-side browser detection? node.js

前端 未结 15 1102
不知归路
不知归路 2020-12-07 09:29

Most implementations i\'ve seen are for browser detection on the client side. I was just wondering if it was possible to do browser detection before sending any resources to

15条回答
  •  爱一瞬间的悲伤
    2020-12-07 10:02

    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.

提交回复
热议问题