skip styleReplaceAll if same; add some safety checks
This commit is contained in:
parent
491fcef08b
commit
cb32b9debf
|
@ -2,6 +2,10 @@
|
|||
'use strict';
|
||||
|
||||
(() => {
|
||||
if (typeof window.applyOnMessage === 'function') {
|
||||
// some weird bug in new Chrome: the content script gets injected multiple times
|
||||
return;
|
||||
}
|
||||
var ID_PREFIX = 'stylus-';
|
||||
var ROOT = document.documentElement;
|
||||
var isOwnPage = location.protocol.endsWith('-extension:');
|
||||
|
@ -310,6 +314,14 @@
|
|||
|
||||
|
||||
function replaceAll(newStyles) {
|
||||
if ('disableAll' in newStyles &&
|
||||
disableAll === newStyles.disableAll &&
|
||||
[...styleElements.values()].every(el =>
|
||||
el.disabled === disableAll &&
|
||||
el.parentNode === ROOT &&
|
||||
el.textContent === (newStyles[getStyleId(el)] || []).map(({code}) => code).join('\n'))) {
|
||||
return;
|
||||
}
|
||||
const oldStyles = Array.prototype.slice.call(
|
||||
document.querySelectorAll(`style.stylus[id^="${ID_PREFIX}"]`));
|
||||
oldStyles.forEach(el => (el.id += '-ghost'));
|
||||
|
@ -318,7 +330,8 @@
|
|||
[...retiredStyleTimers.values()].forEach(clearTimeout);
|
||||
retiredStyleTimers.clear();
|
||||
applyStyles(newStyles);
|
||||
oldStyles.forEach(el => el.remove());
|
||||
docRootObserver.evade(() =>
|
||||
oldStyles.forEach(el => el.remove()));
|
||||
}
|
||||
|
||||
|
||||
|
@ -439,6 +452,9 @@
|
|||
}
|
||||
}
|
||||
function sortStyleElements() {
|
||||
if (!observing) {
|
||||
return;
|
||||
}
|
||||
let prevExpected = document.documentElement.lastElementChild;
|
||||
while (prevExpected && isSkippable(prevExpected, true)) {
|
||||
prevExpected = prevExpected.previousElementSibling;
|
||||
|
|
Loading…
Reference in New Issue
Block a user