forked from ChinaGodMan/UserScripts
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdom.js
More file actions
42 lines (42 loc) · 1.31 KB
/
Copy pathdom.js
File metadata and controls
42 lines (42 loc) · 1.31 KB
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
import { addSizeToRepos } from '../init'
import { selectors } from '@/env'
export function observeUrlChanges(callback, delay = 10) {
let lastUrl = location.href
const observer = new MutationObserver(() => {
const url = location.href
if (url !== lastUrl) {
lastUrl = url
setTimeout(() => {
callback()
}, delay)
}
})
observer.observe(document, { subtree: true, childList: true })
return observer
}
export function waitForElement(selector, dis = true) {
return new Promise((resolve, reject) => {
const observer = new MutationObserver(() => {
if (document.querySelector(selector)) {
resolve()
observer.disconnect()
}
})
if (dis) {
const timeout = setTimeout(() => {
observer.disconnect()
reject(new Error('超时:未找到指定元素'))
}, 10000)
}
observer.observe(document.body, { childList: true, subtree: true })
})
}
export function main(delay = 0) {
Promise.race(selectors.map((selector) => waitForElement(selector))).then(() => {
setTimeout(() => {
addSizeToRepos()
}, delay)
}).catch((error) => {
console.error(error.message)
})
}