Pour empêcher l'usage de la touche f5 et du rafraîchissement dans une page html (ou php)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 26 027 fois - Téléchargée 27 fois

Contenu du snippet

J'ai passé un peu de temps à chercher (mal sans doute) sur les FORUM comment empêcher le rafraîchissement d'une page HTML, par la touche F5 ET par le bouton du navigateur...
et je n'ai pas trouvé tout à fait chaussure à mon pied, c'est pourtant quelquefois nécessaire.

Ma solution est la suivante (doit fonctionner avec IE4+ et avec Nestscape6+) :
1) pour empêcher l'utilisation du bouton du navigateur, ouvrir la fenêtre avec:
<A HREF="#" onClick="window.open('mapage.php,'libellé','toolbar=0,location=0,directories=0,status=0,scrollbars=1,resizable=1,copyhistory=0,menuBar=0,width=800,height=600');return(false)">...</a>
2) pour détourner la touche F5 (maintenant, elle doit fermer la fenêtre), ajouter le code proposé plus bas dans les parties "<javascript>" et "<body>"

Source / Exemple :


<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<script type="text/javascript" language="javascript">

var layers = false;
var ie4 = (document.all) ? true : false;
var ns6 = (document.getElementById&&!document.all) ? true : false;
if (ie4 || ns6) {layers = true;} 

 
function test_f5(e)

{ 
var val="";
if(ie4)	{
	val="K"+window.event.keyCode;
	if (val == "K116") { 
		window.close();
	} else {
		return true; 
	}
}
if (ns6) {
	val="K"+e.which;
	if (val == "K116") { 
		window.close();
	} else {
		return true; 
	}
}
}

</script>
</head>
<body onKeyDown="test_f5(event)">
...
</body>
</html>

Conclusion :


-> onKeyDown teste la touche qui a été activée

-> le paramètre (event) est passé pour l'usage de Netscape

Il y a sans doute 1000 autres manières d'arriver au résultat ...

Je remercie tous ceux qui m'ont donné un peu de ce tout qui marche.

A voir également

Ajouter un commentaire

Commentaires

jalliot
Messages postés
3
Date d'inscription
mardi 2 septembre 2003
Statut
Membre
Dernière intervention
9 septembre 2003
-
Génial,

J'ai pas mal cherché aussi sur les forums et je n'ai rien trouvé de satisfaisant. Merci beaucoup.

Par ailleurs, je voudrais bloquer d'autres touches de fonctions tel que de 'F1', 'F3' ou 'F4'. Sais-tu où je peux trouver les valeurs de ces touches? J'ai fait un test pour récupérer leurs valeurs mais il ne marche pas sur les touches "fonction".

Encore Merci
cs_chacha1960
Messages postés
3
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
10 octobre 2003
-
Salut, et content que tu y trouves une solution.

Pour les autres touches, c'est facile :
-> ajoutes dans le code, juste après la (les) ligne(s) ...
val="F"+...
... la ligne
alert(val);

... çà s'affichera tout seul, y'a plus qu'à tester les touches ...

Les valeurs sont logiques :
F1 -> F112
F2 -> F113
F3 -> F114
F4 -> F115
F5 -> F116 ...
jalliot
Messages postés
3
Date d'inscription
mardi 2 septembre 2003
Statut
Membre
Dernière intervention
9 septembre 2003
-
Merci pour l'info.
cs_Chrigou
Messages postés
30
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
27 juin 2008
-
Malheureusement, il faut AUSSI bloquer les touches Ctrl+R (même fonction que F5), sinon ça sert à rien !
cs_chacha1960
Messages postés
3
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
10 octobre 2003
-
Bonne remarque de Chrigou !
Je propose, pour l'instant, de bloquer la touche CTRL (ce qui ne me gêne pas dans mon cas), en modifiant le code comme suit :

Remplacer le test :
if (val == "F116") {
par
if (val "F116" || val "F17") {

Si la touche CTRL vous semble nécessaire dans votre cas, il faut continuer à chercher, ou modifier votre code pour prévenir les désagréments liés à ces touches ...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.