Bonjour,

J'ai fait un petit jeu de memory en JS.
Il se passe un truc inattendu sous FF : quand je clique sur une image il la met en surbrillance. En fait, elle est recouverte d'un "voile" bleu. Smiley rolleyes

Connaissez-vous ce comportement et savez-vous comment l'éviter ?
Je n'avais jamais remarqué ça avant. Je n'arrive pas à trouver ce qui déclenche ça sous FF.
Tout se passe bien sur IE.

Le jeu est là pour test :
http://esbkarate.free.fr/memory/

Le css :


h1 {
	font-size: 1.4em;
}
table{
	margin: auto;
	border: silver;
	border-style: solid;
	border-width: 1px;
}
td{
	width: 110px;
	height: 110px;
}		
#globale{
	margin: auto;
	text-align: center;
}
.cache{
	background-repeat: no-repeat;
	background-position: center center;
	background-image: url(images/dos.gif);
	cursor:pointer;
}
.pas_vue{
	visibility: hidden;
}
.visible{
	background: white;
	visibility: visible;
}
.vide{
	background: white none;
}



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   
<html  xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<title>Memory</title>
	<link rel="stylesheet" type="text/css" href="memory.css" title="mon style"/>

<script type="text/javascript">
//LES VARIABLES
var tabbase = new Array(20);
var tabdonne = new Array();
var nbr = 20
var alea
var deuxfois
var carte1="";
var carte2="";
var visibles = 0;
var numero="";
var essai= 0;
var trouvees = 0;
var controle=true;

//remplissage 
	for(var i=0; i<20;i++){
		tabbase[i] = i;
		
		for(var c=0; c<10;c++){
			
			tabbase[c] = "images/carte"+c+".gif";
		}
		for(var d=10; d<20;d++){
			
			deuxfois = d - 10;
			
			tabbase[d] = "images/carte"+deuxfois+".gif";
		}
	}

//mélange 
  for(var i=0; i<nbr; i++){
  tabdonne[i] = tabbase[i];
  }

  while( nbr> 0){
    alea = Math.floor(Math.random() * nbr);
    nbr--;
    tire = tabdonne[alea];
    for( i= alea; i < nbr; i++){
      tabdonne[i] = tabdonne[i+1]
	  }
    tabdonne[nbr] = tire;
  }

//distribuer 
function donne(){
	for(var i = 0 ; i<20; i++){
		var affiche = '<img src ="'+tabdonne[i]+'" class="pas_vue" id="c'+i+'" />';
		document.getElementById("t"+i).innerHTML = affiche ;
		
	}
}

//le clic sur les cartes
function clic(numero){

	if(visibles==0){
		if(document.images[numero].className == 'pas_vue'){//si la carte est face cachee
		
			if(controle==true){//pour controler les moments où le joueur peut retourner une carte
				document.images[numero].className = 'visible';//on la rend visible
				carte1=document.images[numero];// on la stocke dans une variable pour la comparer avec la 2ème
				visibles=1;
				numero="";
			}
		}
	}else if(visibles==1){//on a deja clique, il existe une carte1
		if(document.images[numero].className == 'pas_vue'){//si la carte est face cachee
		
			if(controle==true){
				document.images[numero].className = 'visible';
				carte2=document.images[numero];
				visibles=0;
				controle=false;//apres le 2e clic, controle sera remis à true par le setTimeout ou ligne 106, apres elimination de la paire
			}
				
				if(carte1.src != carte2.src){//les cartes sont differentes
						
					setTimeout("carte1.className = 'pas_vue'; carte2.className = 'pas_vue'; controle=true;",1000);//un peu de temps pour memoriser
					essai ++;//comteur de coups
					
				}else if(carte1.src == carte2.src){//elles sont égales
					essai ++;
					trouvees = trouvees + 2;
					carte1.src="images/blanc.gif";
					carte2.src="images/blanc.gif";
					controle=true;
						if(trouvees == 20){//toutes les cartes on été trouvées
							document.getElementById("resultat").className = "visible";
							alert("Bravo vous avez réussi en " +essai+ " coups");
							document.getElementById("coups").innerHTML = "voulez-vous rejouer ?"; 
							}
				}
		}		
	}

}

//onload
function lancement(){
donne();
}

//ça nous a plu on recommence  [smile]
function recharger(){
	window.location="valerie_memory.html";
}
	</script>


</head>


<body onload="lancement()";>
<div id="globale">
<h1>Jeux de Memory</h1>

<p>Trouvez les paires pour éliminer toutes les cartes</p>
	<table>
		<tr>
			<td id="t0" class="cache" onclick="clic(0)">&nbsp;</td>
			<td id="t1" class="cache" onclick="clic(1)">&nbsp;</td>
			<td id="t2" class="cache" onclick="clic(2)">&nbsp;</td>
			<td id="t3" class="cache" onclick="clic(3)">&nbsp;</td>
		</tr>
		<tr>
			<td id="t4" class="cache" onclick="clic(4)">&nbsp;</td>
			<td id="t5" class="cache" onclick="clic(5)">&nbsp;</td>
			<td id="t6" class="cache" onclick="clic(6)">&nbsp;</td>
			<td id="t7" class="cache" onclick="clic(7)">&nbsp;</td>
		</tr>
		<tr>
			<td id="t8" class="cache" onclick="clic(8)">&nbsp;</td>
			<td id="t9" class="cache" onclick="clic(9)">&nbsp;</td>
			<td id="t10" class="cache" onclick="clic(10)">&nbsp;</td>
			<td id="t11" class="cache" onclick="clic(11)">&nbsp;</td>
		</tr>
		<tr>
			<td id="t12" class="cache" onclick="clic(12)">&nbsp;</td>
			<td id="t13" class="cache" onclick="clic(13)">&nbsp;</td>
			<td id="t14" class="cache" onclick="clic(14)">&nbsp;</td>
			<td id="t15" class="cache" onclick="clic(15)">&nbsp;</td>
		</tr>
		<tr>
			<td id="t16" class="cache" onclick="clic(16)">&nbsp;</td>
			<td id="t17" class="cache" onclick="clic(17)">&nbsp;</td>
			<td id="t18" class="cache" onclick="clic(18)">&nbsp;</td>
			<td id="t19" class="cache" onclick="clic(19)">&nbsp;</td>
		</tr>
	</table>
	<p id="coups">Bonne chance !</p>
	<input type="button" id="resultat" class="pas_vue" value="Rejouer" onclick="recharger()"/>
	
</div>
</body>
</html>

(le code n'est pas très lisible dans mon message, il est dispo sur la source de la page).

Merci[/i][/i][/i][/i][/i]
Modifié par astree (01 Jun 2010 - 10:49)
Salut,

La description que tu en fais consisterai à sélectionner l'image avec le curseur ou avec la sélection complète du contenu de la page, qui a tendance à provoquer cela.
Mais sous Firefox 3.6.3, je ne constate aucun problème de ce genre.
Oui, c'est ça, j'obtiens le même effet lorque je sélectionne l'image avec le curseur.
Je suis sur Firefox 3.5.9.
Mais j'ai fait l'essai sur un autre pc avec la 3.6.3 et j'ai eu le même soucis ! Smiley eek
Hello,

Problème constaté avec Firefox 3.6 sur mac.
Je n'ai pas trouvé d'explication au problème. Rajouter un return false après l'appel de la fonction clic() ne change rien. Lorsque j'exécute le code de la fonction clic() depuis la console de Firebug, ce comportement (sélection de l'image) ne se produit pas.

Si le problème est circonscris à Firefox, tu peux à priori faire deux choses:
1. Utiliser -moz-user-select: none; en CSS sur le TABLE ou les TD pour empêcher la sélection.
2. Essayer de reproduire ce problème dans une page plus minimaliste, et le cas échéant faire un rapport de bug sur https://bugzilla.mozilla.org/ (relative maitrise de l'anglais de rigueur).
Merci pour vos réponses.
De mon côté toujours rien, je ne sais toujours pas ce qui se passe avec FF.
En attendant, je vais utiliser -moz-user-select: none;
Quand j'aurai un peu plus de temps, je ferai des tests.

Merci pour la solution de la règle CSS.
Bonne journée