Comment ajoutez-vous un onload
événement à un élément?
Puis-je utiliser:
<div onload="oQuickReply.swap();" ></div>
pour ça?
javascript
html
monkey_boys
la source
la source
body
mieuxdiv
div
les éléments ne se "chargent" pas.Réponses:
Non, tu ne peux pas. Le moyen le plus simple de le faire fonctionner serait de placer l'appel de fonction directement après l'élément
Exemple:
ou - encore mieux - juste devant
</body>
:... pour ne pas empêcher le chargement du contenu suivant.
la source
</body>
. fe si vous voulez masquer le<div>
seul si javascript est activé mais évitez de "flasher". Le temps de visibilité dépend du temps dont le navigateur a besoin pour charger / analyser tous les scripts en ligne / externes.onload
L'
onload
événement ne peut être utilisé que surdocument(body)
lui - même, les cadres, les images et les scripts. En d'autres termes, il ne peut être attaché qu'à un corps et / ou à chaque ressource externe . Le div n'est pas une ressource externe et il est chargé en tant que partie du corps, donc l'onload
événement ne s'y applique pas.la source
onload
ne fonctionnent donc sur aucun<script>
sanssrc
attribut HTML (j'essayais d'utiliser ces conseils dans un script en ligne, et j'ai constaté que cela ne fonctionnait pas)Vous pouvez déclencher certains js automatiquement sur un élément IMG en utilisant onerror, et pas de src.
la source
événement onload qu'il ne prend en charge qu'avec quelques balises comme celles répertoriées ci-dessous.
Voici la référence pour l'événement onload
la source
Essaye ça! Et n'utilisez jamais le déclencheur deux fois sur div!
Vous pouvez définir la fonction à appeler avant la balise div.
DÉMO: jsfiddle
la source
onload
), puis appelle ces fonctions. Le script fonctionne même si vous changez l'attribut en autre chose queonload
par exemple jsfiddle.net/mrszgbxhJe veux juste ajouter ici que si quelqu'un veut appeler une fonction lors de l'événement de chargement de div et que vous ne voulez pas utiliser jQuery (en raison d'un conflit comme dans mon cas), alors appelez simplement une fonction après tout le code html ou tout tout autre code que vous avez écrit, y compris le code de fonction et appelez simplement une fonction.
OU
la source
nous pouvons utiliser MutationObserver pour résoudre le problème de manière efficace en ajoutant un exemple de code ci-dessous
la source
En novembre 2019, je cherche un moyen de créer un (hypothétique)
onparse
EventListener
pour<elements>
lequel ne tient pasonload
.(Hypothétique)
onparse
EventListener
doit être capable d'écouter lorsqu'un élément est analysé .Troisième tentative (et solution définitive)
J'étais assez satisfait de la deuxième tentative ci-dessous, mais il m'a juste semblé que je pouvais rendre le code plus court et plus simple, en créant un événement sur mesure:
C'est encore la meilleure solution.
L'exemple ci-dessous:
parse
Event
window.onload
tout moment ou à tout moment) qui:data-onparse
parse
EventListener
à chacun de ces élémentsparse
Event
à chacun de ces éléments pour exécuter leCallback
Exemple de travail:
Deuxième essai
La première tentative ci-dessous (basée sur
@JohnWilliams
«brillant Empty Image Hack ) a utilisé un code dur<img />
et a fonctionné.J'ai pensé qu'il devrait être possible de supprimer
<img />
entièrement le code dur et de ne l'insérer dynamiquement qu'après avoir détecté, dans un élément qui devait déclencher unonparse
événement, un attribut comme:Il s'avère que cela fonctionne très bien.
L'exemple ci-dessous:
data-onparse
<img src />
et l'ajoute au document, immédiatement après chacun de ces élémentsonerror
EventListener
lorsque le moteur de rendu analyse chaque<img src />
Callback
et supprime celui généré dynamiquement à<img src />
partir du documentExemple de travail:
Premier essai
Je peux construire sur
@JohnWilliams
'<img src>
hack (sur cette page, à partir de 2017) - qui est, jusqu'à présent, la meilleure approche que j'ai rencontrée.L'exemple ci-dessous:
onerror
EventListener
lorsque le moteur de rendu analyse<img src />
Callback
et supprime le<img src />
du documentExemple de travail:
la source
utiliser un iframe et le cacher iframe fonctionne comme une balise body
la source
J'avais besoin d'exécuter du code d'initialisation après l'insertion d'un morceau de code HTML (instance de modèle), et bien sûr, je n'avais pas accès au code qui manipule le modèle et modifie le DOM. La même idée vaut pour toute modification partielle du DOM par l'insertion d'un élément html, généralement a
<div>
.Il y a quelque temps, j'ai fait un hack avec l'événement onload d'un
<img>
contenu presque invisible contenu dans un<div>
, mais j'ai découvert qu'un style vide et de portée fera également l'affaire:Mise à jour (15 juillet 2017) - La
<style>
surcharge n'est pas prise en charge dans la dernière version d'IE. Edge le prend en charge, mais certains utilisateurs le voient comme un navigateur différent et s'en tiennent à IE. L'<img>
élément semble mieux fonctionner sur tous les navigateurs.Pour minimiser l'impact visuel et l'utilisation des ressources de l'image, utilisez un src en ligne qui la garde petite et transparente.
Un commentaire que je pense avoir besoin de faire à propos de l'utilisation de
<script>
est combien il est difficile de déterminer de quel<div>
script est proche, en particulier dans les modèles où vous ne pouvez pas avoir un identifiant identique dans chaque instance que le modèle génère. Je pensais que la réponse pourrait être document.currentScript, mais ce n'est pas universellement pris en charge. Un<script>
élément ne peut pas déterminer son propre emplacement DOM de manière fiable; une référence à «ceci» pointe vers la fenêtre principale et n'est d'aucune utilité.Je crois qu'il est nécessaire de se contenter d'utiliser un
<img>
élément, même s'il est maladroit. Cela pourrait être un trou dans le cadre DOM / javascript qui pourrait utiliser le branchement.la source
Étant donné que l'
onload
événement n'est pris en charge que sur quelques éléments, vous devez utiliser une autre méthode.Vous pouvez utiliser un MutationObserver pour cela:
la source
J'aime vraiment la bibliothèque YUI3 pour ce genre de choses.
Voir: http://developer.yahoo.com/yui/3/event/#onavailable
la source
onload
.J'apprends javascript et jquery et passais par toutes les réponses, j'ai rencontré le même problème lors de l'appel de la fonction javascript pour charger l'élément div. J'ai essayé
$('<divid>').ready(function(){alert('test'})
et cela a fonctionné pour moi. Je veux savoir est cette bonne façon d'effectuer l'appel onload sur l'élément div de la même manière que j'ai utilisé le sélecteur jquery.Merci
la source
Comme cela a été dit, vous ne pouvez pas utiliser à la place un événement onLoad sur un DIV mais avant la balise body.
mais dans le cas où vous avez un fichier de pied de page et que vous l'incluez dans plusieurs pages. il est préférable de vérifier d'abord si le div que vous voulez est sur cette page affichée, afin que le code ne soit pas exécuté dans les pages qui ne contiennent pas ce DIV pour le charger plus rapidement et gagner du temps pour votre application.
vous devrez donc donner un ID à cette DIV et faire:
la source
J'avais la même question et essayais d'obtenir un Div pour charger un script de défilement, en utilisant onload ou load. Le problème que j'ai trouvé était que cela fonctionnerait toujours avant que la Div ne puisse s'ouvrir, pas pendant ou après, donc ça ne marcherait pas vraiment.
Ensuite, j'ai trouvé cela en guise de solution.
J'ai placé la Div à l'intérieur d'un Span et ai donné au Span deux événements, un survol et un déplacement. Ensuite, en dessous de cette Div, j'ai placé un lien pour ouvrir la Div et j'ai donné à ce lien un événement pour onclick. Tous les événements sont identiques, pour faire défiler la page vers le bas de la page. Maintenant, lorsque le bouton pour ouvrir le Div est cliqué, la page sautera à mi-chemin et le Div s'ouvrira au-dessus du bouton, provoquant les événements mouseover et mouseout pour aider à pousser le script de défilement vers le bas. Ensuite, tout mouvement de la souris à ce point poussera le script une dernière fois.
la source
Vous pouvez utiliser un intervalle pour le vérifier jusqu'à ce qu'il se charge comme ceci: https://codepen.io/pager/pen/MBgGGM
la source
D'abord pour répondre à votre question: non, vous ne pouvez pas, pas directement comme vous le vouliez. Peut-être un peu tard pour répondre, mais c'est ma solution, sans jQuery, pur javascript. Il a été écrit à l'origine pour appliquer une fonction de redimensionnement aux zones de texte après le chargement du DOM et à la clé.
De la même manière, vous pouvez l'utiliser pour faire quelque chose avec (toutes) les divs ou une seule, si spécifié, comme ceci:
Si vous avez vraiment besoin de faire quelque chose avec un div, chargé après le chargement du DOM, par exemple après un appel ajax, vous pouvez utiliser un hack très utile, qui est facile à comprendre et vous le trouverez ... working-with- éléments avant-le-dom-est prêt ... . Il dit "avant que le DOM ne soit prêt" mais il fonctionne de la même manière, après une insertion ajax ou js-appendChild-quoi que ce soit d'un div. Voici le code, avec quelques petits changements à mes besoins.
css
javascript
la source
Lorsque vous chargez du code HTML à partir du serveur et l'insérez dans l'arborescence DOM, vous pouvez l'utiliser
DOMSubtreeModified
comme il est obsolète - vous pouvez donc utiliserMutationObserver
ou simplement détecter directement le nouveau contenu dans la fonction loadElement afin que vous n'ayez pas besoin d'attendre les événements DOMAfficher l'extrait de code
la source
Vous pouvez joindre un écouteur d'événements comme ci-dessous. Il se déclenchera chaque fois que le div ayant le sélecteur se
#my-id
charge complètement dans DOM.Dans ce cas, EventName peut être «charger» ou «cliquer»
https://api.jquery.com/on/#on-events-selector-data-handler
la source
Utilisez plutôt l'événement body.onload, soit via l'attribut (
<body onload="myFn()"> ...
), soit en liant un événement en Javascript. Ceci est extrêmement courant avec jQuery :la source
Essaye ça.
Essayez celui-ci aussi. Vous devez supprimer
.
deoQuickReply.swap()
pour que la fonction fonctionne.la source
alert("This is a div.");
appelé lorsque cette ligne est exécutée et que le résultat (qui estundefined
) est affecté àdiv.onload
. Ce qui est complètement inutile.la source