2 votes

L'événement Javascript "load" ne fonctionne pas comme prévu

Je veux afficher une alerte après l'affichage du bouton, c'est-à-dire après le chargement de la page.

<input type='button' id='lognBtn' value='btn' />
<script>
    window.addEventListener("load", function(){ alert(20); });
</script>

En utilisant ce code, l'alerte est affichée avant le chargement de la page elle-même. J'ai essayé DOMContentLoaded aussi. Aidez-moi, s'il vous plaît.

1voto

Akrion Points 25

Cela fonctionne comme prévu ... c'est juste que l'alerte est un événement bloquant pour le navigateur et vous devez cliquer dessus pour continuer. Vous pouvez voir dans l'exemple ci-dessous que l'alerte affiche la valeur du bouton bien que le bouton est no "montré" en soi :

<input type='button' id='lognBtn' value='helloBtn'/>
<script>
    window.addEventListener("load", function(){ 
    alert(document.getElementById('lognBtn').value) 
    });
</script>

Vous pouvez passer au gestionnaire d'événement sur le bouton ou utiliser setTimeout comme indiqué ici

1voto

Vishak Points 21

Vous pouvez utiliser la méthode setTimeout() pour créer un délai pour appeler l'alerte après le chargement de la page.

window.onload = function(){ 
 if(document.getElementById("demo")){
   setTimeout(function(){ alert("Hello"); }, 1000);
 }
} 

<!DOCTYPE html>
<html>
<body>
<button id="demo"></button>
</body>
</html>

0voto

Dacre Denny Points 17294

Il peut s'agir d'une simple permutation de l'ordre des éléments suivants <script> y <input/> dans votre HTML :

<script>
    document.addEventListener("DOMContentLoaded", function() { 
        alert(20); 
    });
</script>
<input type='button' id='lognBtn' value='btn' />

En général, je recommande d'utiliser DOMContentLoaded pour ce genre de choses de toute façon. Pour plus d'informations sur cet événement, voir la documentation MDN

0voto

R.D Points 226

La solution est très simple. Vous utilisez load afin que le navigateur l'affiche dès le chargement de la page. Il suffit de le changer en click ainsi et vous obtiendrez l'alerte après avoir cliqué sur le bouton, ce qui vous donne un certain contrôle sur le moment où l'alerte doit apparaître et laisse le temps au bouton de s'afficher avant l'alerte.

<input type='button' id='lognBtn' value='btn' />
    <script>
        window.addEventListener("click", function(){ alert(20); }); //change here
    </script>

-1voto

Harun Points 167

Vous pouvez utiliser window.onload événement. En fait, l'alerte apparaît après le chargement du DOM mais vous ne pouvez pas détecter la différence après l'affichage du bouton et ensuite l'alerte apparaît. Vous pouvez utiliser setTimeout pendant 1 seconde.

window.onload = function(){
  setTimeout(function(){ alert(20)},1000);
}

<!DOCTYPE html>
<html>
<body>
  <input type='button' id='lognBtn' value='helloBtn'/>
</body>
</html>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X