Comment faire pour empêcher le navigateur par défaut de l'histoire de l'action pour la touche retour arrière avec le JavaScript?
Est-il un moyen pour empêcher le défaut d'action de se produire lorsque l'utilisateur appuie sur la touche retour arrière sur un navigateur? Je n'ai pas besoin de prévenir l'utilisateur de quitter, juste d'avoir la valeur par défaut de la touche retour arrière d'action. J'ai besoin de la touche de retour arrière pour faire quelque chose de différent (c'est un jeu).
J'ai essayé sans succès:
window.addEventListener('keydown', function(e) {
if (e.keyCode === Game.Key.BACK_SPACE)
{
e.preventDefault();
e.stopPropagation();
return false;
}
}, false);
Si j'ai mis une alerte à l'intérieur de la si, l'alerte sera affiché pour la touche de retour arrière de la presse. Donc, le mot de code est correct.
Edit: Ce doit travailler dans Opera 10.6, Firefox 4, Chrome 6, 9 IE et Safari 5.
- Avez-vous essayé de piégeage
keypress
et/oukeyup
à la place? - Qui navigateur cela échoue dans?
- Chaque navigateur échoue.
- Question connexe: SO: Comment puis-je prévenir la touche retour arrière de naviguer de nouveau?
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin
return false
oue.stopPropagation()
; ni qui fera toute la différence dans un auditeur attaché avecaddEventListener
. Votre code ne fonctionne pas sous Opera, qui permet uniquement de supprimer le navigateur par défaut de comportement dans lekeypress
événement, ou IE <= 8, qui ne supporte pasaddEventListener
. Le suivant devrait fonctionner dans tous les navigateurs, aussi longtemps que vous ne l'avez pas déjàkeydown
etkeypress
de gestionnaires d'événements sur ledocument
.MODIFIER: C'est aussi maintenant de filtrer les événements provenant d'un
<input>
ou<textarea>
élément:unload
de l'événement (etbeforeunload
dans la plupart des navigateurs) qui se déclenche lorsque la page est sur le point de fermer ou d'aller quelque part d'autre, mais vous ne pouvez pas supprimer l'événement.beforeunload
événement: elle permet à la page à au moins afficher un avertissement et demander à l'utilisateur si ils ont vraiment envie de quitter la page.return false
", mais qui semble être la méthode que vous utilisez. En outre, cette méthode ne semble pas fonctionner (sous Firefox en tout cas).return false
, Firefox sera TOUJOURS le meurtre de votre page et de "revenir" à l'instant où vous frappez votre point d'arrêt!onkeydown
,onkeypress
) plutôt que deaddEventListener()
, qui est ce que l'OP est l'aide.J'ai trouvé de Telerik la page de script prêt à l'emploi. Des blocs de Script en arrière bouton d'action: en cliquant dans le bouton précédent du navigateur et la touche retour arrière sur la page. Ce script fonctionne. Je l'utilise dans mon projet.
http://www.telerik.com/community/code-library/aspnet-ajax/general/disable-backspace-from-master-page.aspx
Si vous préférez tout simplement avoir le corrigé de vous-même, sans affecter les autres utilisateurs lorsque les scripts dans la page web, lire ci-dessous.
Voici quelques solutions qui n'changer le navigateur que vous utilisez:
- Firefox sur Linux "mappage" le retour arrière comportement depuis 2006, il n'est donc pas affectées; (en tout cas, il a été tout simplement mis à défiler vers le haut avant)
- Chrome vient d'annoncer qu'il va faire la même chose à partir de maintenant; (http://forums.theregister.co.uk/forum/1/2016/05/20/chrome_deletes_backspace/)
- Firefox sur Windows peut être configuré pour ignorer la touche retour arrière en allant dans about:config et changer le backspace_action réglage à 2; (http://kb.mozillazine.org/Browser.backspace_action)
- Safari ?!