Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DÉSACTIVER LE BOUTON BACK DU BROWSER


Information sur la source

Catégorie :Navigation Classé sous : neutraliser, bouton back, browser, navigateur Niveau : Expert Date de création : 16/07/2008 Date de mise à jour : 19/07/2008 19:21:53 Vu : 4 383

Note :
7,33 / 10 - par 3 personnes
7,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (21)
Ajouter un commentaire et/ou une note

Description

Le bouton back est un élément essentiel du browser.
Il permet de revenir à la page précédente.
Mais il est parfois nécessaire, dans certaines applications propriétaires sécurisées, d'interdire l'usage du bouton back et d'obliger l'utilisateur à utiliser la navigation propre à l'application.
Ce script renvoie le visiteur à la page (contenue dans le cache) où le bouton back avait été cliqué.
A placer dans le head.
 

Source

  • <script type="text/javascript">
  • function noBack(){window.history.forward()}
  • noBack();
  • window.onload=noBack;
  • window.onpageshow=function(evt){if(evt.persisted)noBack()}
  • window.onunload=function(){void(0)}
  • </script>
<script type="text/javascript">
function noBack(){window.history.forward()}
noBack();
window.onload=noBack;
window.onpageshow=function(evt){if(evt.persisted)noBack()}
window.onunload=function(){void(0)}
</script>

Conclusion

Le script fonctionne sous MSIE, Firefox, Safari et Opera.
Ne l'utilisez qu'en cas de réelle nécessité : il est très désagréable de visiter un site et de s'y retrouver piégé.
Vous risqueriez de faire fuir vos visiteurs.
Exemple sur
http://users.skynet.be/mj/noback/page_1.html
 

Historique

16 juillet 2008 11:10:36 :
Petite correction du texte.
19 juillet 2008 19:21:53 :
Ajouté un exemple.

Commentaires et avis

signaler à un administrateur
Commentaire de FREMYCOMPANY le 16/07/2008 11:24:47

C'est une mauvaise solution.
Car si JavaScript est désactivé, ton visiteur accédera quand même à la page.
Disons que cela peut être une manière de le faire comprendre au visiteur, mais le serveur devra, lui, toujours gérer les "retours arrières" possibles du surfeur.

Mieux vaut faire expirer la page via les headers, par exemple.

signaler à un administrateur
Commentaire de Martin72 le 16/07/2008 12:25:26

Bien sûr, si le retour à la page précédente constitue un réel danger, cela ne suffit pas.
Plutôt que "interdire" et "obliger", il vaudrait mieux écrire "empêcher" et "convaincre".

Quelle est ta solution via headers ?

signaler à un administrateur
Commentaire de FREMYCOMPANY le 16/07/2008 12:32:44

Les headers permettent de faire expirer un page très rapidement et d'empêcher sa mise en cache. Dans de telles conditions, l'appui sur le bouton précédent devrait (je n'ai pas testé tous les navigateurs car je n'ai encore jamais appliqué cette technique) ne plus s'afficher et être remplacée par un message d'erreur "La page a expiré". Enfin, cela n'est vrai que si la page a reçu des données par POST, il me semble. C'est en tout cas à vérrifier.

Sinon, je voulais quand même ajouter quand ton code marche normalement assez bien pour l'utilisateur non-averti.

signaler à un administrateur
Commentaire de runinho le 16/07/2008 15:27:22

Comme fremycompany l'a dis c une movaise solution

signaler à un administrateur
Commentaire de Martin72 le 16/07/2008 15:51:08

Ma foi, tant que personne n'en propose de meilleure...

signaler à un administrateur
Commentaire de jantosze le 17/07/2008 10:16:53

Salut,

Dans le cadre d'une page nécessitant JS, pourquoi pas, mais jouer la carte sécurité unique sur une fonction JS j'ai des doutes. J'envisagerai une solution PHP par exemple.

signaler à un administrateur
Commentaire de lakichemole le 17/07/2008 11:19:40 8/10

Je pense que si on utilise cette méthode avec un site intranet (dont on control les versions et les composants des browser utilisateur) cela peut être très utile.
Et comme le dis si bien Martin72 rien de mieu est proposé à priori (testé je veux dire).
Concernant les header et l'expiration de la page ce serait pas mal de tester en effet mais à mon avis le résultat ne sera pas qu'on ne peut pas revenir en arrière et donc pas la même chose.
Concernant le fait de faire la même chose en PHP donc coté serveur il est évident que le site doit gérer le fait de revenir à la page précédente mais le php n'empèchera/limitera pas à mon avis l'utilisation du cache client et le click du bouton précédent qui est purement client.
Enfin je pense que l'idéal pour ce genre de script c'est pour un site entièrement fait en flash (comme deezer) tu fait une recherche dans google tu click sur l'url du site tu arrive sur le site tu commence à utiliser l'appli flash et sans faire exprès tu click sur précédent (ou tu appuis sur backspace) résultat tout se que tu as fait dans l'appli flash est perdu et tu te retrouve sur ta recherche google.
Avec l'utilisation de ce script cela évitera les erreur de manipulation.

signaler à un administrateur
Commentaire de tombeduciel le 17/07/2008 11:30:59

slt martin72 cque tu as proposé est meilleur:et pour les autres je leur dis :la meilleure façon pour éliminer une suggestion il faut en proposer une meilleure et merci

signaler à un administrateur
Commentaire de tombeduciel le 17/07/2008 11:41:00

g crée une application de gestion de stock sur access pour la gestion des téléphonies mobiles ,des entées et des sorties avec etat de stock, mon probléme:comment pourrai-je faire pour établir un état de tous les articles que g de tell date à tell date et les quantités livrée de tell date à telle date on calculant la somme des articles sortant dans cette période?

signaler à un administrateur
Commentaire de jantosze le 17/07/2008 11:42:35

Le script de Martin72 est prévu dans un cas (si j'ai compris)  de navigation:
je suis sur un site en page A je vais vers B puis vers une page sécurisée C, dans le cas d'un BACK, il n'y a pas de retour sur B mais uniquement sur A, sur C ou une autre page que B. Exemple de mise en oeuvre PHP sur le tuto de
http://www.phpfrance.com/tutoriaux/index.php/2006/09/27/45-comment-rediriger

En fait, on ne neutralise pas la touche BACK mais on joue sur la redirection.

signaler à un administrateur
Commentaire de youspim le 17/07/2008 11:45:27 6/10

Personnellement j'utilise plutôt location.replace dés que je peut car cela permet d'écraser la dernière entrée de l'historique plutôt que d'en rajouter une et de ce fait il est impossible de revenir la page précédente.

Peut être que la vrais bonne technique c'est de combiner toutes ces méthodes selon la situation et du réel besoin que l'on a.

Enfin, je précise que ce genre de pratique n'est pas destiné a des pages web normales, c'est à réserver à un usage pour applications internes (publique restreins et avisé).

Merci pour la contribution ;-)

signaler à un administrateur
Commentaire de lakichemole le 17/07/2008 12:22:54

meaculpa j'avais pas bien compris son script, alors en effet c'est pas top^^, l'utilisation des header et l'expiration de la page est pas mal :)

signaler à un administrateur
Commentaire de banbanfr le 18/07/2008 03:54:59 8/10

Je trouve que cela peut être utile mais dans quel cas ?? là je sais pas.
Par contre, s'il y a une solution pour désactiver réellement le bouton précédent (et non un va et revient) je suis preneur (dans le cas d'une appli ajax cela peut être utile) car on voit bien que le navigateur repart vers B mais revient vers C aussi tôt ce qui est équivaut a 2 chargements au final.
Sinon c'est une bonne initiative!

Cordialement

signaler à un administrateur
Commentaire de FREMYCOMPANY le 18/07/2008 10:08:09

Pour tromper le bouton suivant, il y a toujours une solution à base d'une IFRAME que l'on fait changer d'adresse et dont la première page "autoforward" vers la suivante. Ainsi, c'est juste l'iframe invisible qui change de page, et le contenu de la page principale n'est pas perdu.

signaler à un administrateur
Commentaire de banbanfr le 18/07/2008 10:10:20

Merci :)

signaler à un administrateur
Commentaire de bultez le 19/07/2008 14:12:22


bonjour à toutes et à tous,

  "intéressant"

- location.replace peut parfois remplacer
- <noscript>au cas où</noscript>
  peut "obliger" le javascript, le signaler...
- on peut gérer coté serveur
- on peut tester d'où on vient dans la
  "page précédente"

- concevoir l'application "autrement"
  et en fait... tout est là !
...

j'avais déjà vu ça, je ne suis pas le seul je pense ?
ça peut être utile dans certains contextes
( sans parler d'autre chose que d'éviter
   les fausses manips d'un utilisateur )
en plus de l'aspect codage pas si simple.

bref... utile et intéressant :
la preuve : le nombre d'interventions.

Cordialement.

signaler à un administrateur
Commentaire de Martin72 le 19/07/2008 19:15:44

Merci pour les commentaires.  Je voudrais ajouter ceci.

- Sur ce site (http://www.javascriptfr.com), il s'agit, en principe, de ne proposer que des solutions javascript.
- Le mot "sécurisé" est maladroit car ce script ne sécurise rien.  Je voulais dire que, sauf réelle nécessité, il devrait être exclu des sites web publics.  Il provoque des réactions très négatives chez les visiteurs.
- Certaines applications ne peuvent pas se contenter d'une solution aussi simple.
- Un avertissement "noscript" est bien sûr très utile.
- Ce petit script ne fait aucun appel au serveur : il s'agit d'une opération locale interne, utilisant le cache du navigateur du client.
- Le script résout le cas de Firefox : depuis la version 1.5 (fin 2005), son cache se comporte différemment.  Voir, entre autres, la doc sur
http://developer.mozilla.org/fr/docs/Utilisation_du_cache_de_Firefox_1.5.
- Il n'y a aucun moyen de supprimer le bouton back du navigateur du client mais seulement de le neutraliser.  Même en ouvrant une fenêtre sans menu, il reste la touche "retour" du clavier.  
- Enfin, comme un bon exemple vaut mieux que de longues explications, j'invite les amateurs à une petite démo sur
http://users.skynet.be/mj/noback/page_1.html

Cordialement.

signaler à un administrateur
Commentaire de ralecul le 22/07/2008 23:25:32

Dans le cadre d'une utilisation pour un intranet il existe une autre solution :
Installer Prism (anciennement Xulrunner, http://labs.mozilla.com/2007/10/prism/) encore en Beta malheureusement.

Prism permet en gros d'avoir un Firefox sans bouton de navigation et de barre d'adresse.
Bien sur si c'est pour une utilisation autre qu'un intranet cela ne peut pas convenir.
Et je reviens au questionnement portant sur l'utilité de la chose.

signaler à un administrateur
Commentaire de banbanfr le 22/07/2008 23:36:43

Le problème de Prism c'est qu'il faut avoir l'appli car si tu fournis a quelqu'un un fichier générer, il ne pourra rien en faire sauf s'il télécharge a son tour prism. peut etre une solution en java pour embarquer l'ensemble (fichier+appli)

signaler à un administrateur
Commentaire de ralecul le 23/07/2008 00:01:59

Il faut installer Prism pour l'utiliser ça c'est clair ;-)

Après je ne comprend pas ta remarque : qu'est-ce que tu appelles appli ?
S'il s'agit du site web que tu consultes via Prim -> ça marche avec gmail donc pas besoin d'héberger le site localement.
S'il s'agit du raccourci sur le bureau que tu créé ça peut se déployer facilement dans le cadre d'un usage interne (intranet).
Sinon ben j'ai pas compris...

Dans tous les cas je te conseille de l'installer juste pour voir, tu verras que c'est assez facile de créer des raccourcis (appli ?).

signaler à un administrateur
Commentaire de banbanfr le 23/07/2008 00:27:46

Je l'ai installé et testé depuis un moment le seul avantage de ce genre appli (application, logiciel) c'est d'avoir un raccourcis sur son bureau et effectivement d'avoir le minimum requit pour naviguer sur le net.Je ne critique pas, je donne juste mon opinion :). Je l'ai testé pour l'utiliser avec : www.dematplus.fr un site que j'ai fait pour fournir à certain clients une sorte d'application qui pointe directement vers ce site mais le problème, c'est que je devais leur demander à tous de télécharger Prism pourtant quand tu ouvres Prism et lui fournie les informations du site à utiliser, un fichier .app est généré (genre il a fabriquer une application tonsite.app) et donc pensais que cela suffisait pour mes clients ce qui n'est en faite pas le cas :

Voilà le contenu du package générer :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>DEMAT Plus</string>
<key>CFBundleIconFile</key>
<string>app.icns</string>
</dict>
</plist>

et :

#!/bin/sh
exec /Applications/Prism.app/Contents/MacOS/xulrunner -webapp demat.plus@prism.app

Cordialement ;)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

fonction close ne marche pas sur la fenêtre 'première' du navigateur [ par thierry ] Bonjour,Je suis à la recherche d'une solution concernant la fermeture la fenêtre 'première' du navigateur sans validation. La fonction close ne foncti Bloquer l'option precedente du navigateur [ par sebhehe ] Je voudrais bloque l'option precedente du navigateur mais je n'y arrive pasje pense que c'est une option de l'objet historyMerci d'avanceSEb Pour la fermeture du navigateur [ par Philippe ] Salut,Comment savoir si une personne ferme le navigateur et non la page en cours onUnload dans le body ne marche pas parce que c'est aussi effectuer q browser window [ par ianus ] bizarre !!je travaille sur dream 3 sous pc et lorsque je programme des browser window (fenetre flottante) cela fonctionne parfaitement en ligne avec u comment faire pour integrer un fichier executable .exe pour qu'il se lance lors de l'ouverture de la page dans le navigateur [ par grutgrut ] grugrut vous demande comment faire si par exemple j'ai un petit jeu en .exe et que je voudrais que lorsque l'on arrive sur mon site en cliquant sur le Le petit "X" pour fermer un navigateur [ par ypothier ] Lorsque j'ouvre une nouvelle fenêtre en faisant: window.showModalDialog(...) est-ce qu'il y a un paramètre que je dois mettre pour désactiver le "X" q rendre inaccessible le back du browser [ par Juliie ] Bonjour,Je développe des pages en coldfusion, et j'aimerais rendre inaccessible le back du browser pour empêcher les utilisateurs de planter certains Option "Taille de texte" du Browser [ par guidal ] Voilà mon problème ...Je souhaite prendre le controle de la propriété "Taille du texte" du menu Affichage IE (également la prop correspondante sous Ne fichier css en fonction du navigateur [ par stephbb75 ] Salut Tous,Une question peut être bette !! Est ce que je peut inclure un fichier css en fonction du navigateur !!En claire, dans head si je met un scr navigateur réduit - touche F11 [ par icka ] Bonjour Est-ce que l'un d'entre vous connaît le code pour forcer le navigateur à une lecture pleine écran avec barre de navigation réduite.(équivalent


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.