¿Cómo se agrega un onload
evento a un elemento?
Puedo usar:
<div onload="oQuickReply.swap();" ></div>
¿para esto?
javascript
html
monkey_boys
fuente
fuente
body
mejordiv
div
los elementos no se "cargan".Respuestas:
No puedes. La forma más fácil de hacerlo funcionar sería colocar la llamada a la función directamente después del elemento
Ejemplo:
o, mejor aún, justo delante de
</body>
:... por lo que no bloquea la carga del siguiente contenido.
fuente
</body>
. fe si desea ocultar el<div>
único si javascript está habilitado pero evite "flashear" El tiempo de visibilidad depende de cuánto tiempo necesita el navegador cargar / analizar todos los scripts en línea / externos.onload
El
onload
evento solo se puede usar endocument(body)
sí mismo, marcos, imágenes y scripts. En otras palabras, se puede conectar solo al cuerpo y / o a cada recurso externo . El div no es un recurso externo y se carga como parte del cuerpo, por lo que elonload
evento no se aplica allí.fuente
onload
no funciona en ninguna<script>
sin unsrc
atributo HTML (yo estaba tratando de utilizar este consejo en una secuencia de comandos en línea y encontró que no estaba trabajando)Puede activar algunos js automáticamente en un elemento IMG usando onerror, y no src.
fuente
El evento onload solo es compatible con algunas etiquetas como las que se enumeran a continuación.
Aquí la referencia para el evento de carga
fuente
¡Prueba esto! ¡Y nunca use el gatillo dos veces en div!
Puede definir la función para llamar antes de la etiqueta div.
DEMO: jsfiddle
fuente
onload
) y luego llama a esas funciones. El script funciona incluso si cambia el atributo a algo diferente a,onload
por ejemplo, jsfiddle.net/mrszgbxhSolo quiero agregar aquí que si alguien quiere llamar a una función en el evento de carga de div y no desea usar jQuery (debido a un conflicto como en mi caso), simplemente llame a una función después de todo el código html o cualquier otro código que haya escrito, incluido el código de función y simplemente llame a una función.
O
fuente
podemos usar MutationObserver para resolver el problema de manera eficiente agregando un código de muestra a continuación
fuente
En noviembre de 2019, estoy buscando una manera de crear un (hipotético)
onparse
EventListener
para el<elements>
cual no lo tomoonload
.El (hipotético)
onparse
EventListener
debe poder escuchar cuando se analiza un elemento .Tercer intento (y solución definitiva)
Estaba bastante contento con el segundo intento a continuación, pero me sorprendió que puedo hacer que el código sea más corto y simple, creando un evento a medida:
Esta es la mejor solución hasta ahora.
El siguiente ejemplo:
parse
Event
window.onload
o en cualquier momento) que:data-onparse
parse
EventListener
a cada uno de esos elementosparse
Event
a cada uno de esos elementos para ejecutar elCallback
Ejemplo de trabajo
Segundo intento
El primer intento a continuación (basado en
@JohnWilliams
'brillante truco de imagen vacía ) usó un código rígido<img />
y funcionó.Pensé que debería ser posible eliminar por
<img />
completo el código rígido y solo insertarlo dinámicamente después de detectar, en un elemento que necesitaba disparar unonparse
evento, un atributo como:Resulta que esto funciona muy bien.
El siguiente ejemplo:
data-onparse
<img src />
y agrega dinámicamente al documento, inmediatamente después de cada uno de esos elementosonerror
EventListener
cuando el motor de renderizado analiza cada<img src />
Callback
y elimina dinámicamente<img src />
el documento generado.Ejemplo de trabajo
Primer intento
Puedo construir sobre
@JohnWilliams
'<img src>
hackear (en esta página, desde 2017), que es, hasta ahora, el mejor enfoque que he encontrado.El siguiente ejemplo:
onerror
EventListener
cuando el motor de renderizado analiza<img src />
Callback
y elimina el<img src />
del documento.Ejemplo de trabajo
fuente
use un iframe y escóndelo iframe funciona como una etiqueta de cuerpo
fuente
Necesitaba ejecutar un código de inicialización después de insertar un fragmento de html (instancia de plantilla) y, por supuesto, no tenía acceso al código que manipula la plantilla y modifica el DOM. La misma idea es válida para cualquier modificación parcial del DOM mediante la inserción de un elemento html, generalmente un
<div>
.Hace algún tiempo, hice un truco con el evento de carga de un elemento casi invisible
<img>
contenido en un<div>
, pero descubrí que un estilo vacío y con alcance también funcionaría:Actualización (15 de julio de 2017): la
<style>
carga no es compatible con la última versión de IE. Edge lo admite, pero algunos usuarios lo ven como un navegador diferente y se adhieren a IE. El<img>
elemento parece funcionar mejor en todos los navegadores.Para minimizar el impacto visual y el uso de recursos de la imagen, use un src en línea que la mantenga pequeña y transparente.
Un comentario que creo que necesito hacer sobre el uso de a
<script>
es cuánto más difícil es determinar qué<div>
secuencia de comandos está cerca, especialmente al crear plantillas donde no se puede tener una identificación idéntica en cada instancia que genera la plantilla. Pensé que la respuesta podría ser document.currentScript, pero esto no es universalmente compatible. Un<script>
elemento no puede determinar su propia ubicación DOM de manera confiable; una referencia a 'esto' apunta a la ventana principal y no sirve de nada.Creo que es necesario conformarse con usar un
<img>
elemento, a pesar de ser tonto. Esto podría ser un agujero en el marco DOM / javascript que podría usar la conexión.fuente
Dado que el
onload
evento solo se admite en unos pocos elementos, debe utilizar un método alternativo.Puede usar un MutationObserver para esto:
fuente
Realmente me gusta la biblioteca YUI3 para este tipo de cosas.
Ver: http://developer.yahoo.com/yui/3/event/#onavailable
fuente
onload
.Estoy aprendiendo javascript y jquery y estaba revisando toda la respuesta, me enfrenté al mismo problema al llamar a la función javascript para cargar el elemento div. Lo intenté
$('<divid>').ready(function(){alert('test'})
y funcionó para mí. Quiero saber si esta es una buena forma de realizar una llamada de carga en el elemento div de la forma en que lo hice con jquery selector.Gracias
fuente
Como todos decimos, no puedes usar el evento onLoad en un DIV sino antes que la etiqueta del cuerpo.
pero en caso de que tenga un archivo de pie de página e inclúyalo en muchas páginas. es mejor verificar primero si se muestra el div que desea en esa página, para que el código no se ejecute en las páginas que no contienen ese DIV para que se cargue más rápido y ahorre algo de tiempo para su aplicación.
entonces deberá darle una identificación a ese DIV y hacer:
fuente
Tenía la misma pregunta y estaba tratando de obtener un Div para cargar un script de desplazamiento, usando onload o load. El problema que encontré fue que siempre funcionaría antes de que el Div pudiera abrirse, no durante o después, por lo que realmente no funcionaría.
Entonces se me ocurrió esto como una solución.
Puse el Div dentro de un Span y le di dos eventos, un mouseover y un mouseout. Luego, debajo de ese Div, coloqué un enlace para abrir el Div, y le di a ese enlace un evento para onclick. Todos los eventos son exactamente iguales, para que la página se desplace hacia abajo hasta la parte inferior de la página. Ahora, cuando se hace clic en el botón para abrir el Div, la página saltará hacia abajo en parte, y el Div se abrirá sobre el botón, haciendo que los eventos de mouseover y mouseout ayuden a empujar el script de desplazamiento hacia abajo. Luego, cualquier movimiento del mouse en ese punto empujará el script por última vez.
fuente
Puede usar un intervalo para verificarlo hasta que se cargue de esta manera: https://codepen.io/pager/pen/MBgGGM
fuente
Primero para responder a su pregunta: No, no puede, no directamente como quería hacerlo. Puede ser un poco tarde para responder, pero esta es mi solución, sin jQuery, javascript puro. Originalmente se escribió para aplicar una función de cambio de tamaño a áreas de texto después de que se carga DOM y en el keyup.
De la misma manera que podría usarlo para hacer algo con (todos) divs o solo uno, si se especifica, así:
Si realmente necesita hacer algo con un div, cargado después de cargar el DOM, por ejemplo, después de una llamada ajax, puede usar un truco muy útil, que es fácil de entender y lo encontrará ... trabajando con ... elements-before-the-dom-is-ready ... . Dice "antes de que el DOM esté listo", pero funciona de la misma manera, después de una inserción ajax o js-appendChild-lo que sea de un div. Aquí está el código, con algunos pequeños cambios a mis necesidades.
css
javascript
fuente
Cuando carga algo de HTML desde el servidor e lo inserta en el árbol DOM, puede usarlo,
DOMSubtreeModified
sin embargo, está en desuso, por lo que puede usarMutationObserver
o simplemente detectar contenido nuevo dentro de la función loadElement directamente, por lo que no tendrá que esperar los eventos DOMMostrar fragmento de código
fuente
Puede adjuntar un detector de eventos como se muestra a continuación. Se disparará cada vez que el div que tiene un selector se
#my-id
cargue completamente en DOM.En este caso, EventName puede ser 'cargar' o 'hacer clic'
https://api.jquery.com/on/#on-events-selector-data-handler
fuente
Utilice el evento body.onload en su lugar, ya sea mediante el atributo (
<body onload="myFn()"> ...
) o vinculando un evento en Javascript. Esto es extremadamente común con jQuery :fuente
Prueba esto.
Prueba este también. Debe eliminar
.
deoQuickReply.swap()
para que la función funcione.fuente
alert("This is a div.");
se llama cuando se ejecuta esta línea yundefined
se asigna el resultado (que es )div.onload
. Lo cual es completamente inútil.fuente