Optimized fall-back reporting for non-HTTP documents and included script type.

This commit is contained in:
hackademix 2024-11-12 22:26:40 +01:00
parent 6fadd5c4f9
commit 0790ad885e
No known key found for this signature in database
GPG Key ID: 231A83AFDA9C2434
1 changed files with 16 additions and 7 deletions

View File

@ -169,12 +169,13 @@ if (!/^https:/.test(location.protocol)) {
// let's emulate them using mutation observers
const checked = new Set();
const checkSrc = async (node) => {
if (!('src' in node && node.parentNode)) {
if (!(node.src && node.parentNode)) {
return;
}
const type = node instanceof HTMLMediaElement ? "media"
: node instanceof HTMLIFrameElement ? "sub_frame"
: node instanceof HTMLObjectElement || node instanceof HTMLEmbedElement ? "object"
: node instanceof HTMLScriptElement ? "script"
: "";
if (!type) {
return;
@ -199,12 +200,20 @@ if (!/^https:/.test(location.protocol)) {
}
}
};
const observer = new MutationObserver(mutationsCallback);
observer.observe(document.documentElement, {
childList: true,
subtree: true,
attributeFilter: ["src"],
});
const watch = () => {
[...document.querySelectorAll("media, video, audio, iframe, frame, object, embed, script")].forEach(checkSrc);
const observer = new MutationObserver(mutationsCallback);
observer.observe(document.documentElement, {
childList: true,
subtree: true,
attributeFilter: ["src"],
});
}
if (document.readyState === "complete") {
watch();
} else {
addEventListener("DOMContentLoaded", watch, true);
}
}
ns.on("capabilities", () => {