Pracoval jsem na tom několik hodin a jsem v bodě, kde se cítím, jako bych mohl být se snaží dosáhnout něčeho nepoužitelný. Nějakou radu nebo pohled, který je určitě ocení!
Použití případ, že jsem cílení vyžaduje přerušení prohlížeče DOM parsování před tím, než má šanci čerpat <body>
prvek. K dosažení tohoto cíle, jsem použít tento one-liner jako první skript s názvem v mé <head>
prvek:
document.replaceChild(document.createElement('html'), document.children[0]);
Úspěšně zabraňuje prohlížeče z jakékoli následné volání skriptů, a <body>
prvek zůstává un-vykreslen. Nicméně, pokud označení obsahuje onload
atribut na <body>
prvek, který funkci nebo kód je stále nazývá prohlížeč.
Jako kontextu, který zachycuje DOM parsování je v <head>
Nemůžu použít document.body.removeEventListener()
k poklesu posluchače událostí, protože body
prvek ještě neexistuje. Nastavení window.onload
k null
nemá žádný vliv, a ani se snaží zachytit nastavení window.onload
pomocí Object.defineProperty(window, 'onload', {...})
. V každém případě, onload
funkce, nebo prohlášení ještě zavolají.
Předejít zřejmá otázka, proč jsem prostě nemůže vyhnout použití <body onload="...">
použití případ je pro vývojářské nástroje, takže se snažím vytvořit záložní pro určité absolutní podmínky. Pokud to není možné, to není vrah, aby můj projekt, ale já bych rád věděl, proč to nemůže být provedeno.
Díky předem!