Fix: don't argue for mutations generated by other extensions

This commit is contained in:
eight 2019-03-09 14:49:02 +08:00
parent f05c13722b
commit 8458b6b7a4

View File

@ -19,6 +19,7 @@ const APPLY = (() => {
onChange: () => { onChange: () => {
if (styleInjector.outOfOrder()) { if (styleInjector.outOfOrder()) {
styleInjector.sort(); styleInjector.sort();
return true;
} }
} }
}); });
@ -414,21 +415,21 @@ const APPLY = (() => {
} }
function createDocRootObserver({onChange}) { function createDocRootObserver({onChange}) {
let lastCalledTime = performance.now(); let digest = 0;
let continuousCalledCount = 0; let lastCalledTime = NaN;
let observing = false; let observing = false;
const observer = new MutationObserver(() => { const observer = new MutationObserver(() => {
const now = performance.now(); if (digest) {
if (now - lastCalledTime < 1000) { if (performance.now() - lastCalledTime > 1000) {
if (continuousCalledCount >= 5) { digest = 0;
} else if (digest > 5) {
throw new Error('The page keeps generating mutations. Skip the event.'); throw new Error('The page keeps generating mutations. Skip the event.');
} }
continuousCalledCount++;
} else {
continuousCalledCount = 0;
} }
lastCalledTime = now; if (onChange()) {
onChange(); digest++;
lastCalledTime = performance.now();
}
}); });
return {start, stop, evade}; return {start, stop, evade};