2 votes

Très étrange ! Appeler window.location ou location.replace redirige vers la page, puis de nouveau vers l'arrière !

Je suis en mode débogage, ce qui me permet de voir quelle page est touchée.

Lorsque j'appelle l'un ou l'autre window.location o window.location.replace(..) il va à la page, mais revient ensuite à la page d'origine !

Comment cela est-il possible ?

La solution a été d'ajouter :

    window.location.replace(...);

    return false;

Pourquoi les return false Comment faire pour que cela fonctionne correctement maintenant ?

4voto

palswim Points 4353

Si ce script s'est produit sur un onclick o onsubmit alors pas de retour ou retour true indique que le navigateur doit prendre l'action par défaut pour le lien/formulaire. Ainsi, si vous avez un onclick comme un gestionnaire :

<a href="http://www.google.com/" onclick="window.location = 'http://www.yahoo.com/';">

Le navigateur ira ensuite sur Yahoo, puis verra qu'il doit exécuter l'autre action du lien (naviguer vers Google). Lorsque vous indiquez return false; le navigateur sait qu'il ne doit pas exécuter l'action suivante/par défaut.

<a href="http://www.google.com/" onclick="window.location = 'http://www.yahoo.com/'; return false;">

Alors, pourquoi l return false; pour que cela fonctionne ?

Pour tout gestionnaire d'événement, renvoyer true indique de continuer comme d'habitude et de revenir false signifie qu'il faut cesser d'essayer de gérer l'événement ( empêche le traitement par défaut et arrête la propagation ), bien qu'il existe des les arguments contre l'utilisation de return false; .

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