提交 | 用户 | age
|
2f6253
|
1 |
function getTypeVersion() { |
陈 |
2 |
const userAgent = navigator.userAgent.toLowerCase(); |
|
3 |
|
|
4 |
const browserTypes = { |
|
5 |
IE: /(?:msie|trident.*rv).([\d.]+)/, |
|
6 |
Edge: /edge.([\d.]+)/, |
|
7 |
Chrome: /chrome.([\d.]+)/, |
|
8 |
Firefox: /firefox.([\d.]+)/, |
|
9 |
Opera: /opera.([\d.]+)/, |
|
10 |
Safari: /(?:safari|version).([\d.]+)/, |
|
11 |
}; |
|
12 |
type BrowserKeys = keyof typeof browserTypes; |
|
13 |
|
|
14 |
/** browser type */ |
|
15 |
let type!: BrowserKeys | null; |
|
16 |
/** browser version */ |
|
17 |
let version!: string | null; |
|
18 |
|
|
19 |
for (type in browserTypes) { |
|
20 |
if ((version = browserTypes[type as BrowserKeys].exec(userAgent) as any)) { |
|
21 |
version = version[1]; |
|
22 |
break; |
|
23 |
} |
|
24 |
} |
|
25 |
|
|
26 |
if (version) { |
|
27 |
if (type === 'IE') { |
|
28 |
try { |
|
29 |
document.execCommand('BackgroundImageCache', false, true as any); |
|
30 |
} catch (error) { |
|
31 |
console.log(error); |
|
32 |
} |
|
33 |
} |
|
34 |
} else { |
|
35 |
type = version = null; |
|
36 |
} |
|
37 |
return { type, version }; |
|
38 |
} |
|
39 |
|
|
40 |
const { type, version } = getTypeVersion(); |
|
41 |
|
|
42 |
export function getType() { |
|
43 |
return type; |
|
44 |
} |
|
45 |
|
|
46 |
export function getVersion() { |
|
47 |
return version; |
|
48 |
} |
|
49 |
|
|
50 |
export function isIeFn() { |
|
51 |
return type === 'IE'; |
|
52 |
} |
|
53 |
|
|
54 |
export function isChromeFn() { |
|
55 |
return type === 'Chrome'; |
|
56 |
} |
|
57 |
|
|
58 |
export function isEdgeFn() { |
|
59 |
return type === 'Edge'; |
|
60 |
} |
|
61 |
|
|
62 |
export function isSafariFn() { |
|
63 |
return type === 'Safari'; |
|
64 |
} |
|
65 |
|
|
66 |
export function isFirefoxFn() { |
|
67 |
return type === 'Firefox'; |
|
68 |
} |
|
69 |
|
|
70 |
export function isOperaFn() { |
|
71 |
return type === 'Opera'; |
|
72 |
} |
b35009
|
73 |
|
V |
74 |
/** |
|
75 |
* set page Title |
|
76 |
* @param {*} title :page Title |
|
77 |
*/ |
144ab5
|
78 |
function setDocumentTitle(title: string) { |
b35009
|
79 |
document.title = title; |
V |
80 |
const ua = navigator.userAgent; |
|
81 |
const regex = /\bMicroMessenger\/([\d.]+)/; |
|
82 |
// 兼容 |
|
83 |
if (regex.test(ua) && /ip(hone|od|ad)/i.test(ua)) { |
|
84 |
const i = document.createElement('iframe'); |
|
85 |
i.src = '/favicon.ico'; |
|
86 |
i.style.display = 'none'; |
|
87 |
i.onload = function () { |
|
88 |
setTimeout(function () { |
|
89 |
i.remove(); |
|
90 |
}, 9); |
|
91 |
}; |
|
92 |
document.body.appendChild(i); |
|
93 |
} |
144ab5
|
94 |
} |
b35009
|
95 |
|
V |
96 |
export function setTitle(title: string, appTitle?: string) { |
|
97 |
if (title) { |
|
98 |
const _title = title ? ` ${title}-${appTitle} ` : `${appTitle}`; |
|
99 |
setDocumentTitle(_title); |
|
100 |
} |
|
101 |
} |