Quite el Atributo definido por el `onload` de `<body>`

0

Pregunta

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!

events html javascript
2021-11-21 14:39:38
1

Mejor respuesta

2

Usted puede utilizar el Documento readystate en el interactive estado, y sobrescribir el onload atributo.

document.onreadystatechange = () => {
   if (document.readyState === 'interactive') 
      window.onload = null;
}

(Añadido el código de tu comentario para la integridad.)

2021-11-21 15:08:35

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................