deviceType.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. export default function({ req }, inject) {
  2. console.log("devicetype...............");
  3. let deviceType = {};
  4. deviceType.ios = false;
  5. deviceType.android = false;
  6. deviceType.pc = false;
  7. deviceType.ios = false;
  8. deviceType.wx = false;
  9. deviceType.app = false;
  10. deviceType.spider = false;
  11. let cookie = "",
  12. ua = "";
  13. /** 通过UA判断设备类型 **/
  14. if (req && req.headers) {
  15. ua = (req && req.headers && req.headers["user-agent"]) || "";
  16. } else if (window && window.navigator) {
  17. ua = window.navigator.userAgent;
  18. }
  19. if (/(iPhone|iPad|iPod|iOS)/i.test(ua)) {
  20. deviceType.ios = true;
  21. } else if (/(Android)/i.test(ua)) {
  22. deviceType.android = true;
  23. } else {
  24. deviceType.pc = true;
  25. }
  26. /** 通过cookie 判断是不是APP **/
  27. if (req && req.headers) {
  28. cookie = req.headers.cookie || "";
  29. } else if (document) {
  30. cookie = document.cookie;
  31. }
  32. deviceType.app = judgeHasX_APP(cookie);
  33. /** 判断是不是 微信 **/
  34. if (/(MicroMessenger)/i.test(ua)) {
  35. deviceType.wx = true;
  36. }
  37. /** 判断是不是 蜘蛛 **/
  38. if (/(spider)/i.test(ua)) {
  39. deviceType.spider = true;
  40. }
  41. deviceType.isMobile = function() {
  42. return deviceType.ios || deviceType.android;
  43. };
  44. deviceType.isPC = function() {
  45. return deviceType.pc;
  46. };
  47. deviceType.isWx = function() {
  48. return deviceType.wx;
  49. };
  50. function judgeHasX_APP(cookiedata) {
  51. var cookies = cookiedata ? cookiedata.split("; ") : [];
  52. var i = 0;
  53. for (; i < cookies.length; i++) {
  54. var parts = cookies[i].split("=");
  55. var name = parts[0].replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);
  56. if (name === "x_app") {
  57. return true;
  58. }
  59. }
  60. return false;
  61. }
  62. inject && inject("deviceType", deviceType);
  63. return deviceType;
  64. }