Comment puis-je prévenir la touche retour arrière de naviguer de nouveau?

Sur IE je peux le faire avec l' (terriblement non-standard, mais de travail) jQuery

if ($.browser.msie)
    $(document).keydown(function(e) { if (e.keyCode == 8) window.event.keyCode = 0;});

Mais est-il possible de le faire d'une manière qui fonctionne sur Firefox, ou une manière de croix-navigateur pour un bonus?

Pour l'enregistrement:

$(document).keydown(function(e) { if (e.keyCode == 8) e.stopPropagation(); });

ne fait rien.

$(document).keydown(function(e) { if (e.keyCode == 8) e.preventDefault(); });

résout le problème, mais rend la touche retour arrière inutilisable sur la page, ce qui est encore pire que l'original comportement.

EDIT:
La raison pour laquelle je fais c'est que je ne suis pas la création d'une page web simple mais d'une grande application. Il est incroyablement ennuyeux de perdre 10 minutes de travail juste parce que vous avez appuyé sur la touche retour arrière dans le mauvais endroit. Le ratio de la prévention des erreurs vs ennuyeux, les utilisateurs doivent être au-dessus de 1000/1 par la prévention de la touche retour arrière de naviguer de nouveau.

EDIT2: je suis pas d'essayer d'empêcher l'histoire de la navigation, seulement les accidents.

EDIT3: @brentonstrines commentaire (déplacé ici car la question est tellement populaire): C'est un long-terme de "réparer", mais vous pouvez jeter votre soutien derrière le Chrome bug pour modifier ce comportement dans webkit

  • Pourquoi voulez-vous faire cela? Les raccourcis clavier sont importants pour les utilisateurs de puissance et les handicapés comme aux utilisateurs d'utiliser efficacement votre site.
  • Idem; c'est un peu une chose étrange à faire... sauf si vous avez quelques cas TRÈS spécifiques à l'utilisation de la touche retour arrière de votre application et de piégeage ont été pour vous-même. Si vous essayez de désactiver la fonctionnalité arrière dans l'historique du navigateur, je ne crois pas qu'il existe un moyen de façon fiable (ou autre?) le faire.
  • Parce que la touche retour arrière est surchargé. Vous pourriez ne pas avoir remarqué, mais vous avez probablement l'utiliser tout le temps pour effacer les lettres que vous venez de saisir dans un champ de texte. Certains de mes clients ont eu de la difficulté avec qui causer de la page pour revenir, donc c'est une information utile. Personne, mais vous clowns sait que le retour arrière est censé remonter d'une page. C'est quelque chose que je n'ai jamais su, et c'est carrément hostile comportement d'un navigateur à avoir. Je pense que toutes les pages doivent désactiver ce comportement.
  • Pourquoi les gens pense que c'est bizarre? À l'aide de la touche retour arrière pour la navigation est vraiment stupide de raccourci! il ya tellement de nombreux champs de texte que les utilisateurs pourraient vouloir supprimer du texte à partir d'imaginer une SORTE de réponse, le passage à une autre fenêtre pour vérifier quelque chose, et puis vous revenez et mis-cliquez sur la zone d'édition, appuyez sur retour arrière pour supprimer un mot et tout à coup le navigateur une page et que vous avez peut-être perdu tout ce que vous venez d'écrire.
  • Pourquoi je veux faire cela? Je ne suis pas la création d'un site web mais une application web. Certains champs sont en lecture seule dans ce cas, ils look modifiable, mais si vous appuyez sur la touche retour arrière vous quittez la page. Le ratio de retour arrière presses de l'intention de revenir vs retour arrière presses à essayer d'effacer quelque chose qui est probablement beaucoup moins que 1 / 1000.
  • Erik, champs en lecture seule ne faut pas regarder modifiable - pourquoi ne pas utiliser un peu de jQuery pour re-style de champs en lecture seule?
  • Pour utiliser le même argument que les autres gens: C'est la norme, donc ça devrait être fait. Pour utiliser un argument réel: Oui, ce serait probablement une bonne idée, mais j'ai encore envie de prévenir les accidents.
  • La question est de savoir comment le faire, pas votre avis sur si c'est une bonne idée ou pas. Sans connaître les détails du projet, vos opinions sont vides de sens. Mon client a expressément demandé à ce comportement pour un de mes projets et une vraie réponse plutôt que "Pourquoi voudriez-vous jamais eu envie de le faire?" serait utile.
  • C'est un long-terme de "réparer", mais vous pouvez jeter votre soutien derrière le Chrome bug pour modifier ce comportement dans webkit: code.google.com/p/chromium/issues/detail?id=144832
  • Je suis à l'aide de alt+gauche comme un bouton de retour, donc je suis prêt pour la désactivation de la touche retour arrière comme un bouton de retour. Hélas, IMDB a détourné les touches fléchées donc, je dois utiliser la touche retour arrière là.
  • Google a inclus cette stupide-cul de mappage de touches de Chrome, mais ils ont également désactivé la cartographie dans leur page de résultats de recherche, faire de retour arrière agir en tant que la touche retour arrière devrait même lorsque la requête champ de texte n'est pas centré. Même les entreprises qui font les navigateurs n'aime pas cette clé de liaison.
  • Les réponses à cette question ne sont pas assez bonnes. Ils sont trop complexes, pourrait ne pas attraper tous les cas d'accidents de navigation, et peut désactiver la normale "retour arrière" de la fonction dans des champs de saisie. Idéalement, les entreprises qui réalisent les navigateurs devraient désactiver cet os à tête de clé de liaison par défaut. Jusqu'à ce qui pourrait arriver, je vous suggère de simplement confirmer la navigation si tout le texte a été saisi dans les champs de formulaire. La deuxième réponse ici semble bon: stackoverflow.com/questions/5102602/...
  • J'ai créé un projet MNP avec une version propre de la actuellement accepté de répondre: github.com/slorber/backspace-disabler
  • Google a l'intention de supprimer le retour arrière de navigation le 26-juillet-2016. Il est actuellement disponible en Chrome 52 (bêta canal).
  • Peut-être que les navigateurs peuvent aussi carte delete pour avancer d'une page?
  • Simple mais élégante solution qui peut ou peut ne pas fonctionner pour vous.. onkeydown="alert('Champ en Lecture Seule!'); return false;" ou onkeydown="return false;"
  • Ce qui me dérange le plus dans tout ça, c'est que Breton commentaire a le plus de likes. Évidemment, il y a beaucoup de "développeurs de logiciels" qui sont trop fermé d'esprit pour voir toutes les raisons pour lesquelles vous pourriez avoir besoin de la touche retour arrière de navigation désactivé. Pour ceux qui ne sont pas à l'esprit fermé, je peux peut-être donner une idée: si l'utilisateur tape un grand nombre de données sur la page, ou ils sinon la page de telle sorte qu'une de navigation de changement serait de perdre leur travail, un simple, stupide retour arrière de navigation "mésaventure" par l'utilisateur peut être extrêmement frustrant perte de temps et d'efforts.
  • Permettez-moi de vous rappeler à tous qu'il est de notre TRAVAIL pour faire de notre logiciel aussi convivial que possible. 90 logiciels de qualité juste ne sera pas coupé plus. Et si vous ne pouvez pas donner un sacrément si votre logiciel est top-notch ou si vos utilisateurs sont contenu, vous devez quitter et de trouver un autre emploi. Tous nous faire une faveur, de développeur et de l'utilisateur final comme.

InformationsquelleAutor erikkallen | 2009-09-29