web-dev-qa-db-fra.com

Est-il possible de cliquer sur = "history.clear ();"

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

10
Dozent

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.

14
Guffa

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.

6
KnowGe

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. :-)

1
T.J. Crowder

utilisez: navigator.app.clearHistory ();

0
adsdsadsdasdasd