7
7
/// dependency safe-self.fn
8
8
function removeNode (
9
9
element = '' ,
10
- needle = '' ,
11
- run = ''
10
+ needle = ''
12
11
) {
13
12
if ( element === '' || needle === '' ) { return ; }
14
13
const safe = safeSelf ( ) ;
15
14
const reNeedle = safe . patternToRegex ( needle ) ;
16
- let timer ;
17
- const remnode = ( ) => {
18
- timer = undefined ;
15
+ const removenode = ( ) => {
19
16
try {
20
17
const nodes = document . querySelectorAll ( element ) ;
21
18
if ( nodes . length > 0 ) {
@@ -25,34 +22,36 @@ function removeNode(
25
22
}
26
23
}
27
24
}
28
- } catch { }
29
- } ;
30
- const mutationHandler = mutations => {
31
- if ( timer !== undefined ) { return ; }
32
- let skip = true ;
33
- for ( let i = 0 ; i < mutations . length && skip ; i ++ ) {
34
- const { type, addedNodes, removedNodes } = mutations [ i ] ;
35
- if ( type === 'attributes' ) { skip = false ; }
36
- for ( let j = 0 ; j < addedNodes . length && skip ; j ++ ) {
37
- if ( addedNodes [ j ] . nodeType === 1 ) { skip = false ; break ; }
38
- }
39
- for ( let j = 0 ; j < removedNodes . length && skip ; j ++ ) {
40
- if ( removedNodes [ j ] . nodeType === 1 ) { skip = false ; break ; }
41
- }
42
- }
43
- if ( skip ) { return ; }
44
- timer = self . requestAnimationFrame ( remnode ) ;
45
- } ;
46
- const start = ( ) => {
47
- remnode ( ) ;
48
- if ( / \b l o o p \b / . test ( run ) === false ) { return ; }
49
- const observer = new MutationObserver ( mutationHandler ) ;
50
- observer . observe ( document . documentElement , {
51
- childList : true ,
52
- subtree : true ,
53
- } ) ;
54
- } ;
55
- runAt ( ( ) => { start ( ) ; } , / \b c o m p l e t e \b / . test ( run ) ? 'idle' : 'interactive' ) ;
25
+ } catch { }
26
+ } ;
27
+ let observer , timer ;
28
+ const onDomChanged = mutations => {
29
+ if ( timer !== undefined ) { return ; }
30
+ let shouldWork = false ;
31
+ for ( const mutation of mutations ) {
32
+ if ( mutation . addedNodes . length === 0 ) { continue ; }
33
+ for ( const node of mutation . addedNodes ) {
34
+ if ( node . nodeType !== 1 ) { continue ; }
35
+ shouldWork = true ;
36
+ break ;
37
+ }
38
+ if ( shouldWork ) { break ; }
39
+ }
40
+ if ( shouldWork === false ) { return ; }
41
+ timer = self . requestAnimationFrame ( ( ) => {
42
+ timer = undefined ;
43
+ removenode ( ) ;
44
+ } ) ;
45
+ } ;
46
+ const start = ( ) => {
47
+ if ( removenode ( ) === false ) { return ; }
48
+ observer = new MutationObserver ( onDomChanged ) ;
49
+ observer . observe ( document . body , {
50
+ subtree : true ,
51
+ childList : true ,
52
+ } ) ;
53
+ } ;
54
+ runAt ( ( ) => { start ( ) ; } , 'interactive' ) ;
56
55
}
57
56
58
57
/// rename-attr.js
0 commit comments