Ho lavorato su questo per un paio di ore e sono al punto in cui mi sento come potrebbe essere il tentativo di realizzare qualcosa di impraticabile. Qualche idea o qualche consiglio è sicuramente apprezzato!
Il caso d'uso sono destinati richiede di interrompere il DOM del browser di analisi prima che abbia la possibilità di attirare l' <body>
elemento. Per fare questo, ho usato questa one-liner come il primo script chiamato nel mio <head>
elemento:
document.replaceChild(document.createElement('html'), document.children[0]);
Questo previene con successo il browser di chiamare qualsiasi script successivi, e il <body>
elemento rimane un rendering. Tuttavia, se il tag include un onload
l'attributo <body>
elemento, la funzione o il codice è ancora chiamato dal browser.
Come il contesto che intercetta DOM analisi è in <head>
Non posso utilizzare document.body.removeEventListener()
per eliminare il listener di eventi, perché il body
elemento non esiste ancora. Impostazione window.onload
per null
non ha alcun effetto, e non tentando di intercettare l'impostazione di window.onload
utilizzando Object.defineProperty(window, 'onload', {...})
. In ogni caso, l' onload
funzione o dichiarazioni ancora chiamato.
Per anticipare la domanda del perché non posso evitare di usare <body onload="...">
il caso d'uso è per strumenti per sviluppatori, quindi sto cercando di creare contingenza per determinate condizioni di assoluta. Se non può essere fatto, non è killer per il mio progetto, ma mi piacerebbe certamente sapere perché non può essere fatto.
Grazie in anticipo!