Skip to content

Commit d4b210d

Browse files
committed
More precise event suppression mechanism.
1 parent c07d194 commit d4b210d

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

src/content/staticNS.js

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,20 @@
103103
let eventTypes = [];
104104
for (let p in document.documentElement) if (p.startsWith("on")) eventTypes.push(p.substring(2));
105105
let eventSuppressor = e => {
106-
if (!ns.canScript) {
107-
e.stopImmediatePropagation();
108-
debug(`Suppressing ${e.type} on `, e.target); // DEV_ONLY
106+
try {
107+
debug("Event suppressor called for ", e.type, e.target, earlyScripts, e.target._earlyScript); // DEV_ONLY
108+
if (!earlyScripts || document.readyState === "complete") {
109+
debug("Stopping event suppression");
110+
for (let et of eventTypes) document.removeEventListener(et, eventSuppressor, true);
111+
return;
112+
}
113+
114+
if (!ns.canScript || e.target._earlyScript) {
115+
e.stopImmediatePropagation();
116+
debug(`Suppressing ${e.type} on `, e.target); // DEV_ONLY
117+
}
118+
} catch (e) {
119+
error(e);
109120
}
110121
}
111122
debug("Starting event suppression");
@@ -126,8 +137,7 @@
126137
error(e);
127138
}
128139
}
129-
debug("Stopping event suppression");
130-
for (let et of eventTypes) document.removeEventListener(et, eventSuppressor, true);
140+
131141
});
132142
}
133143

@@ -142,7 +152,7 @@
142152
}
143153
let replacement = document.createRange().createContextualFragment(s.outerHTML);
144154
replacement._original = s;
145-
s._replaced = true;
155+
s._earlyScript = true;
146156
earlyScripts.push(replacement);
147157
e.preventDefault();
148158
dequeueEarlyScripts(true);
@@ -169,7 +179,6 @@
169179
error("Background page not ready yet, retrying to fetch policy...")
170180
}
171181
}
172-
173182
dequeueEarlyScripts();
174183
},
175184

0 commit comments

Comments
 (0)