Skip to content

Commit dc06bc1

Browse files
authored
Update scriptlets.js
1 parent 98a40d2 commit dc06bc1

File tree

1 file changed

+32
-33
lines changed

1 file changed

+32
-33
lines changed

scriptlets.js

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,12 @@
77
/// dependency safe-self.fn
88
function removeNode(
99
element = '',
10-
needle = '',
11-
run = ''
10+
needle = ''
1211
) {
1312
if ( element === '' || needle === '' ) { return; }
1413
const safe = safeSelf();
1514
const reNeedle = safe.patternToRegex(needle);
16-
let timer;
17-
const remnode = () => {
18-
timer = undefined;
15+
const removenode = () => {
1916
try {
2017
const nodes = document.querySelectorAll(element);
2118
if ( nodes.length > 0 ) {
@@ -25,34 +22,36 @@ function removeNode(
2522
}
2623
}
2724
}
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 ( /\bloop\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(); }, /\bcomplete\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');
5655
}
5756

5857
/// rename-attr.js

0 commit comments

Comments
 (0)