Let'u commencer par exemple suivant:balise d'ancrage HTML Comprendre
Créer trois pages dans le même répertoire: test.html index.html
Votre test.html:
<html>
<head>
<script>
function test()
{
alert('Going to google.com?');
window.location="http://google.com";
}
</script>
</head>
<body>
<a href='' onclick="test();">google.com</a><br/>
<input type="button" value="google" onclick="test();" />
<a href='' onmouseover="test();">google.com</a><br/>
</body>
</html>
Maintenant, vérifiez la page test.html sur IE ainsi que firefox ou crome.
Vous remarquerez les points suivants:
- bouton fonctionne parfaitement.
- Le premier lien hypertexte fonctionne différemment dans IE et un autre navigateur. Dans IE, cela nous ramène à la page index.html, alors que dans Firefox, il reste sur la même page.
- Pour le premier lien hypertexte, window.location échoue.
- Deuxième lien hypertexte que vous ne pouvez pas cliquer dessus, car l'événement survolez le premier, et cela fonctionne parfaitement!
Pourquoi?
Mon intérêt majeur est sur le 3ème point, car il nous donne même alerte, window.location échoue.
Pourquoi avez-vous des étiquettes avant vos déclarations de retour? https://developer.mozilla.org/fr/JavaScript/Reference/Statements/label – Quentin
Si je mets 'alert()' après le 'window.location', alors' alert() 'sera appelé en premier, puis redirigera nous à notre emplacement pourquoi? – Vikas
en fait, je ne suis pas expérimenté dans js pour vous dire pourquoi l'alerte vient avant la redirection. pour moi, il semble que la redirection est déclenchée sur le changement de la propriété location de l'objet window et que l'événement est placé sur une pile et en cours de traitement après l'événement click qui est en cours de traitement dans votre méthode test() – ITroubs