-
Notifications
You must be signed in to change notification settings - Fork 4
/
window.ts
67 lines (64 loc) · 1.38 KB
/
window.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import global from '../global';
import { ssrDocument } from './document';
import requestAnimationFrame from './requestAnimationFrame';
import cancelAnimationFrame from './cancelAnimationFrame';
import isObject from '../is/is-Object';
export const ssrWindow = {
document: ssrDocument,
navigator: {
userAgent: '',
},
location: {
hash: '',
host: '',
hostname: '',
href: '',
origin: '',
pathname: '',
protocol: '',
search: '',
},
history: {
replaceState() {},
pushState() {},
go() {},
back() {},
},
CustomEvent: function CustomEvent() {
return this;
},
addEventListener() {},
removeEventListener() {},
getComputedStyle() {
return {
getPropertyValue() {
return '';
},
};
},
Image() {},
Date() {},
screen: {},
setTimeout() {},
clearTimeout() {},
matchMedia() {
return {};
},
requestAnimationFrame: requestAnimationFrame,
cancelAnimationFrame: cancelAnimationFrame,
};
function extend(target: any = {}, src: any = {}) {
Object.keys(src).forEach((key) => {
if (typeof target[key] === 'undefined') target[key] = src[key];
else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key])) {
extend(target[key], src[key]);
}
});
}
/**
* 程序入口处调用
* 使用global代替window
*/
export function shim() {
return extend(global, ssrWindow);
}