Je vais implémenter le bouton logout dans mon application PhoneGap, ce qui renverra l'utilisateur sur la page d'authentification (avec les champs effacés). Pour le bouton j'utilise anchor with onclick event:
<script type="text/javascript">
function doLogout() {
var backlen = history.length;
history.go(-backlen);
window.location.replace("index.html");
}
</script>
<a data-role="none" href="#" onclick="doLogout"></a>
mais cela ne fonctionne pas, c’est-à-dire qu’il me ramène simplement à la page d’authentification avec les fichiers déjà remplis. Je ne suis pas sûr pour history.clear () , parce que googler ça ne m'a rien donné:
<a data-role="none" href="index.html" onclick="javascript:history.clear();"></a>
Quelqu'un pourrait-il me dire où est mon problème? S'il existe une autre solution pour gérer un événement de déconnexion dans PhoneGap, je la suivrais. Merci
L'appel à history.go
sera ignoré, car vous revenez en arrière d'un pas de plus qu'il n'y a d'éléments dans l'historique. La propriété length
a le nombre d'éléments, y compris celui en cours. Par conséquent, s'il y a par exemple quatre éléments dans l'historique, vous ne pouvez revenir que de trois étapes.
Pour revenir à la première étape, vous devez soustraire un de la longueur:
history.go(-(history.length - 1));
Toutefois, cela ne vous ramènerait à votre page de démarrage que si vous ouvriez une nouvelle fenêtre spécifiquement pour cette page. Sinon, l’utilisateur reviendrait à la première page visitée à l’aide de cette fenêtre.
Il n'y a pas de méthode clear
pour l'objet history
.
Réf.: https://developer.mozilla.org/en-US/docs/DOM/window.history
L'historique du navigateur appartient à l'utilisateur, vous ne pouvez rien en retirer.
Je n'ai jamais développé PhoneGap, mais dans les applications Web, vous pouvez utiliser le code ci-dessous.
essayez window.location.replace(url);
après la redirection, il n'y a aucun moyen d'aller à la page précédente.
Si vous utilisez l'attribut onclick
, ce qui est indiqué dans les guillemets est une instruction réelle, pas seulement le nom d'une fonction. Alors:
<a data-role="none" href="#" onclick="doLogout();"></a>
<!-- Note the (); ----------------------------^^^ -->
Notez également que, parce que vous ne faites rien pour empêcher l'action par défaut de suivre le lien, le navigateur suivra la href
, qui étant #
vous amène en haut de la page actuelle. Vous pouvez empêcher cela (si vous voulez) en ajoutant un return false;
:
<a data-role="none" href="#" onclick="doLogout(); return false;"></a>
Je ne pouvais pas suivre la deuxième partie de votre question, mais je noterai simplement que vous n’avez ni besoin ni besoin du javascript:
sur l’attribut onclick
dans votre deuxième exemple. Vous utilisez uniquement ce pseudo-protocole où un URI est attendu (par exemple, la href
d'une ancre). Le contenu des attributs onXYZ
est toujours du code et non un URI.
Enfin: à moins que vous ne fassiez quelque chose avec le style, ces deux liens seront assez difficiles à cliquer, que ce soit d'être vide. :-)
utilisez: navigator.app.clearHistory ();