File tree 2 files changed +23
-4
lines changed
2 files changed +23
-4
lines changed Original file line number Diff line number Diff line change 1
1
MIT License
2
2
3
- Copyright (c) 2022 CC11001100
3
+ Copyright (c) 2022 JavaScript Reverse Engineering Infrastructure
4
4
5
5
Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
of this software and associated documentation files (the "Software"), to deal
Original file line number Diff line number Diff line change @@ -8,12 +8,18 @@ class WindowMonitor {
8
8
this . windowListenerQueue = [ ] ;
9
9
}
10
10
11
+ /**
12
+ * 增加一个window上新增或者删除变量时的监听器回调函数
13
+ *
14
+ * @param windowListener
15
+ * @returns {Promise<void> }
16
+ */
11
17
async addWindowListener ( windowListener ) {
12
18
this . windowListenerQueue . push ( windowListener ) ;
13
19
}
14
20
15
21
/**
16
- * 启动window监控器
22
+ * 启动window监控器,其实就是异步移动一个while循环每隔 intervalMils 秒去检查一下window上是否有变量变化
17
23
*
18
24
* @param intervalMils 间隔多少毫秒检查一次,默认为300毫秒
19
25
* @returns {Promise<void> }
@@ -30,25 +36,38 @@ class WindowMonitor {
30
36
}
31
37
}
32
38
39
+ /**
40
+ * 对window上的变量做快照,如果有必要的话,则会与上一次的快照做diff尝试触发事件
41
+ *
42
+ * @param isInit 是否是第一次初始化,如果是初始化则只对window上的变量做快照,否则会与前一次的变量快照做diff尝试触发事件
43
+ * @returns {Promise<void> }
44
+ */
33
45
async screenshotWindow ( isInit ) {
34
46
for ( let key in window ) {
35
47
36
- // 已经存在的情况
48
+ // 变量已经存在的情况
37
49
if ( this . windowAttributeSet . has ( key ) ) {
38
50
continue ;
39
51
}
40
52
41
- // 触发新增事件
53
+ // 触发变量新增事件
42
54
if ( ! isInit ) {
43
55
for ( let callback of this . windowListenerQueue ) {
44
56
callback ( key )
45
57
}
46
58
}
47
59
60
+ // 把新增的变量记录一下
48
61
this . windowAttributeSet . add ( key ) ;
49
62
}
50
63
}
51
64
65
+ /**
66
+ * 休眠给定的毫秒数
67
+ *
68
+ * @param mils 要休眠的毫秒数
69
+ * @returns {Promise<number> }
70
+ */
52
71
async sleep ( mils ) {
53
72
return new Promise ( ( resolve ) => setTimeout ( resolve , mils ) ) ;
54
73
}
You can’t perform that action at this time.
0 commit comments