|
@@ -0,0 +1,90 @@
|
|
|
+declare const window: any
|
|
|
+
|
|
|
+const ua = navigator.userAgent
|
|
|
+const hostname = location.hostname.toLowerCase()
|
|
|
+
|
|
|
+// 在安卓或者ios中
|
|
|
+export const androidOrIOS = function () {
|
|
|
+ const u = ua.toLowerCase()
|
|
|
+ let agent = ''
|
|
|
+ if (/iphone|ipod|ipad|ios/.test(u)) {
|
|
|
+ agent = 'ios'
|
|
|
+ } else {
|
|
|
+ agent = 'android'
|
|
|
+ }
|
|
|
+ return agent
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 用于判断是否在APP容器内
|
|
|
+ * @returns {boolean}
|
|
|
+ */
|
|
|
+export const getIsInTheAppContainer = function () {
|
|
|
+ const u = ua.toLowerCase()
|
|
|
+ // 判断是否在app环境下
|
|
|
+ let inApp = false
|
|
|
+ // app调试ua
|
|
|
+ if (u.includes('jianyuapp')) {
|
|
|
+ inApp = true
|
|
|
+ return inApp
|
|
|
+ }
|
|
|
+ if (window.JyObj && window.JyObj.mock) {
|
|
|
+ return inApp
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ if (androidOrIOS() === 'ios') {
|
|
|
+ const iniOSApp = typeof window.webkit.messageHandlers.skipAppointTab.postMessage === 'function'
|
|
|
+ inApp = iniOSApp
|
|
|
+ } else {
|
|
|
+ const inAndroidApp = typeof window.JyObj !== 'undefined'
|
|
|
+ inApp = inAndroidApp
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ console.warn(e)
|
|
|
+ inApp = false
|
|
|
+ }
|
|
|
+ return inApp
|
|
|
+}
|
|
|
+
|
|
|
+export const getIsH5HostName = () => {
|
|
|
+ return hostname.includes('h5')
|
|
|
+}
|
|
|
+
|
|
|
+// 判断是否是微信浏览器
|
|
|
+export const inWeiXinBrowser = ua.toLowerCase().indexOf('micromessenger') !== -1
|
|
|
+const platformOS = androidOrIOS()
|
|
|
+const inApp = getIsInTheAppContainer()
|
|
|
+
|
|
|
+export const getPlatform = () => {
|
|
|
+ const h5host = getIsH5HostName()
|
|
|
+ if (inApp) {
|
|
|
+ return 'app'
|
|
|
+ } else if (h5host) {
|
|
|
+ return 'h5'
|
|
|
+ } else if (inWeiXinBrowser) {
|
|
|
+ return 'wx'
|
|
|
+ } else {
|
|
|
+ return 'h5'
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 存放基本变量的集合
|
|
|
+const _env = {
|
|
|
+ ua,
|
|
|
+ platformOS,
|
|
|
+ platform: getPlatform()
|
|
|
+}
|
|
|
+
|
|
|
+// 对基本变量扩展计算的集合
|
|
|
+const inH5 = _env.platform === 'h5'
|
|
|
+const _envs = {
|
|
|
+ inWX: _env.platform === 'wx',
|
|
|
+ inH5,
|
|
|
+ inApp: inApp,
|
|
|
+ inAppOrH5: inApp || inH5,
|
|
|
+ inAndroid: _env.platformOS === 'android',
|
|
|
+ inIOS: _env.platformOS === 'ios'
|
|
|
+}
|
|
|
+
|
|
|
+export const env = _env
|
|
|
+export const envs = _envs
|