Sur IE, je peux le faire avec jQuery (terriblement non standard, mais qui fonctionne)
if ($.browser.msie)
$(document).keydown(function(e) { if (e.keyCode == 8) window.event.keyCode = 0;});
Mais est-il possible de faire d'une manière qui fonctionne sur Firefox, ou d'une manière multi-navigateur pour un bonus?
Pour mémoire:
$(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 clé de retour arrière inutilisable sur la page, ce qui est encore pire que le comportement d'origine.
EDIT: La raison pour laquelle je fais cela est que je ne crée pas une simple page Web mais une grande application. C'est incroyablement ennuyeux de perdre 10 minutes de travail simplement parce que vous avez appuyé sur la touche de retour au mauvais endroit. Le rapport entre la prévention des erreurs et les utilisateurs ennuyeux devrait être bien supérieur à 1000/1 en empêchant la touche de retour arrière de revenir en arrière.
EDIT2: Je n'essaie pas d'empêcher la navigation dans l'historique, juste les accidents.
EDIT3: Commentaire @brentonstrines (déplacé ici car la question est si populaire): il s'agit d'un «correctif» à long terme, mais vous pouvez apporter votre soutien derrière le bogue Chromium pour changer ce comportement dans le webkit