deviceType.js 1.7 KB

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