| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- export default function ({ req }, inject) {
- let deviceType = {}
- deviceType.ios = false
- deviceType.android = false
- deviceType.pc = false
- deviceType.ios = false
- deviceType.wx = false
- deviceType.app = false
- deviceType.spider = false
-
- let cookie = '', ua = ''
-
- /** 通过UA判断设备类型 **/
- if (req && req.headers) {
- ua = req && req.headers && req.headers[ 'user-agent' ] || ''
- } else if (window && window.navigator) {
- ua = window.navigator.userAgent
- }
- if (/(iPhone|iPad|iPod|iOS)/i.test(ua)) {
- deviceType.ios = true
- } else if (/(Android)/i.test(ua)) {
- deviceType.android = true
- } else {
- deviceType.pc = true
- }
-
- /** 通过cookie 判断是不是APP **/
- if (req && req.headers) {
- cookie = req.headers.cookie || ''
- } else if (document) {
- cookie = document.cookie
- }
-
- deviceType.app = judgeHasX_APP(cookie)
-
- /** 判断是不是 微信 **/
- if (/(MicroMessenger)/i.test(ua)) {
- deviceType.wx = true
- }
-
- /** 判断是不是 蜘蛛 **/
- if (/(spider)/i.test(ua)) {
- deviceType.spider = true
- }
-
- deviceType.isMobile = function () {
- return deviceType.ios || deviceType.android
- }
-
- deviceType.isPC = function () {
- return deviceType.pc
- }
-
- deviceType.isWx = function () {
- return deviceType.wx
- }
-
- function judgeHasX_APP(cookiedata) {
- var cookies = cookiedata ? cookiedata.split('; ') : [];
- var i = 0;
- for (; i < cookies.length; i++) {
- var parts = cookies[ i ].split('=');
- var name = parts[0].replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);
- if (name === 'x_app') {
- return true
- }
- }
- return false
- }
- inject && inject('deviceType', deviceType)
- return deviceType
- }
|