The target iframe uses loading="lazy" and sits far below the fold, so its contentWindow stays at about:blank until it is scrolled into view. Injection and the MutationObserver must handle a frame that exists in the DOM long before it actually loads.