Page 2 sur 2

Publié : 15 déc. 2004, 16:18
par SB
<table width="530px" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>
<td height="164px"><div align="center" ><font color="#000000" size="2" face="Arial, Helvetica, sans-serif">
<a href="indexFR.html" id="lien0"><img src="images/pays/france.jpg" name="img" border="0" alt=""></a><br><br>
Pour Entrer<br>
cliquez sur la touche "<span style="font-style:italic; font-weight:bold; text-decoration:underline">entrée</span>"
</font></div></td>
<td>&nbsp;</td>
<td><div align="center"><font color="#000000" size="2" face="Arial, Helvetica, sans-serif">
<a href="indexEN.html" id="lien1"><img src="images/pays/Anglais.jpg" name="img" border="0" alt=""></a><br>
<br>
For Enter<br>
click the touch "<span style="font-style:italic; font-weight:bold; text-decoration:underline">entry</span>"
</font></div></td>
</tr>
</table>

<script type="text/javascript">
<!--
var lienval=new Array(
"images/pays/france2.jpg",
"images/pays/Anglais2.jpg"
); //========== table des images pour les liens valides

var lieninv=new Array(
"images/pays/france.jpg",
"images/pays/Anglais.jpg"
); //========== table des images pour les liens invalides

for (var n=0;n<2;n++)
{ document.img[n].src=lieninv[n]; } // initialisation des images

var adr=1;

function clavier(evt) { // frappe sur une touche
var whichkey = null;
if(evt){ // pas IE
whichkey = evt.which;
}
else{ // IE
whichkey = window.event.keyCode;
}
if (whichkey==13)
lien=eval('document.getElementById("lien' + adr + '").href');
eval('document.location.href=\'' + lien + '\'');
}

function suivant() // passer au lien suivant
{ document.img[adr].src=lieninv[adr];
adr++;
if (adr>=2) adr=0;
document.img[adr].src=lienval[adr];
setTimeout("suivant();",3000); }
suivant();
document.onkeypress=clavier;
//-->
</script>
J'ai remis la partie du code non javascript car j'ai du y apporter 2 modifs (name="lien" par id="lien0" et id="lien1")

Publié : 15 déc. 2004, 23:02
par PsyDk
Ah bah j'étais arrivé à la même solution :) En revanche il parait qu'il vaut mieux utiliser window.location qui est une variable pouvant être modifiée, document.location est censé être en lecture seule.

Code : Tout sélectionner

function clavier(evt)
{
	// frappe sur une touche
	var whichkey = null;
	if(evt)
	{
		// Standard Compliant
		whichkey = evt.which;
	}
	else
	{
		// Internet Explorer
		whichkey = window.event.keyCode;
	}
	
	if (whichkey == 13)
	{
		window.location = document.getElementById("lien" + adr).href;
	}
}
Le code de détection de la touche Entrée était correct, c'était le code qui agissait en fonction qui ne passait pas.

En résumé :
- utiliser des id au lieu de name ;
- nommer ces id « lien0 » et « lien1 » ;
- récupérer les éléments ayant ces identifiants à l'aide de document.getElementById ;
- utiliser le href de ces éléments (il s'agit de « a ») ;
- donner la nouvelle URL via window.location.

Oh, et utiliser la console de debug Javascript, c'est un outil précieux :)

Publié : 16 déc. 2004, 08:17
par rallierst
:D C'est parfais, merci à tous pour l'aide que vous m'avez apporté. :? Je trouve vraiment dommage, c'est problème d'incompatibilité entre les navigateurs. Le JavaScript est du JavaScript, pourquoi ne pas avoir tous la même synthaxe.

Bref, cela faisait plusieurs semaines que je galérai avec ce code, et gràce à ce forum, le miracle c'est produit.

Merci à tous. :wink:

Publié : 16 déc. 2004, 15:07
par calimo
Ça il faut le demander à Microsoft :|

Publié : 17 déc. 2004, 19:41
par Bobe
calimo a écrit :Ça il faut le demander à Microsoft :|
Ne pas oublier quand même les autres groupes de développeurs (Opera, Mozilla...) qui implémentent parfois comme des gorets ou même uniquement une partie d'une interface.