He estado trabajando en esto durante un par de horas y estoy en el punto donde me siento como que podría estar tratando de lograr algo inviable. Cualquier consejo o una idea es, sin duda apreciada!
El caso de uso estoy focalización requiere interrumpir el navegador del DOM analizar antes de que haya una oportunidad para llamar la <body>
elemento. Para ello, he utilizado este one-liner como el primer script llamado en mi <head>
elemento:
document.replaceChild(document.createElement('html'), document.children[0]);
Este correctamente evita que el navegador de llamar a cualquier posteriores secuencias de comandos, y el <body>
elemento aún no prestados. Sin embargo, si la marca incluye una onload
atributo en el <body>
elemento, la función o el código está siendo llamado por el navegador.
Como el contexto que intercepta DOM analizar es en <head>
No puedo usar document.body.removeEventListener()
para colocar el detector de eventos, debido a que el body
elemento no existe todavía. Configuración window.onload
a null
no tiene ningún efecto, y tampoco lo hace tratando de interceptar la configuración de window.onload
el uso de Object.defineProperty(window, 'onload', {...})
. En cada caso, la onload
función o declaraciones en las que todavía se llama.
Adelantarse a la pregunta obvia de por qué yo no puede evitar el uso de <body onload="...">
el caso de uso es para el desarrollador de herramientas, así que estoy tratando de crear la contingencia de ciertas condiciones absolutas. Si no se puede hacer, no es asesino a mi proyecto, pero estoy segura que me gustaría saber por qué no se puede hacer.
Gracias de antemano!