begin process at 2010 02 10 07:58:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Navigation

 > DÉSACTIVER LE BOUTON BACK DU BROWSER

DÉSACTIVER LE BOUTON BACK DU BROWSER


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 :6 850

Auteur : Martin72

Ecrire un message privé
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.

 Sources de la même categorie

Source avec Zip EMULATION DE $_GET() DU PHP par jchan
Source avec Zip ACCESSIBARRE - AMÉLIORER LE CONFORT DES PERSONNES NON-VOYANT... par Pfuch
Source avec Zip CLASS BARRE DE DÉFILEMENT (SCROLLBAR) JAVASCRIPT par TheWeasel47
Source avec une capture TAILLEFONTE par tiger222
Source avec Zip Source avec une capture MOTEUR DE RECHERCHE SANS PHP par jdmcreator

 Sources en rapport avec celle ci

Source avec Zip VIRTUAL IPHONE par loicseg
Source avec Zip Source avec une capture NAVIGATEUR INTERNET AVEC ONGLETS par loicseg
Source avec Zip DÉTECTER NAVIGATEUR par Yxion
Source avec Zip Source avec une capture AJAX-BROWSER (FILE BROWSER) par sctfic
Source avec Zip GÉNÉRATEUR DE NAVIGATEUR AVEC MENU par abdelaziz_info

Commentaires et avis

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.

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 ?

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.

Commentaire de runinho le 16/07/2008 15:27:22

Comme fremycompany l'a dis c une movaise solution

Commentaire de Martin72 le 16/07/2008 15:51:08

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

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.

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.

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

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?

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.

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 ;-)

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

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

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.

Commentaire de banbanfr le 18/07/2008 10:10:20

Merci :)

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.

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.

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.

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)

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

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

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales