服务器端浏览器检测?节点.js

新手上路,请多包涵

我见过的大多数实现都是用于客户端的浏览器检测。我只是想知道是否可以在向客户端发送任何资源之前进行浏览器检测。

谢谢。

原文由 fancy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 379
2 个回答
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];

那应该适合你。只需将其放入您的响应处理程序即可。

原文由 McKayla 发布,翻译遵循 CC BY-SA 3.0 许可协议

节点的 ua-parser 库( npm install ua-parser )为浏览器用户代理字符串公开了大量正则表达式。我强烈推荐它以满足您的需求。

原文由 S M 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题