Page 1 sur 1

IE 6 et 7 n'aiment pas mon js, FF2 l'aime bien pourtant...

Publié : 02 nov. 2006, 00:24
par kowalsky
Bonjour tout le monde.

Je me prend la tête sur un truc depuis deux heures:

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<title>Cours de Math 1er Année</title>
		<link href="style/style.css" rel="stylesheet" type="text/css" />	
		<script type="text/javascript" src="script/function.js" />
	</head>
	<body onload="rcconf()">
		<div class="Gtitre">
			Cours de Mathematiques pour l'Informatique
		</div>
		<div class="paragraphe" id="p0.1">
			<div class="titrepara" id="tp0.1" onclick="affiche_cache('rappel' , this.id ); "><img src="img/plus.gif" alt="Clickez pour voir" / height="16px"> 0.1 - Rappel des Bases</div>
			<div id="rappel" >
			<p>
			deck<br />
			deck
			</p>
			</div>
		</div>
etc... etc...
Et voici le code JS

Code : Tout sélectionner

function affiche_cache(id , thisid){
	if ( document.getElementById(id).style.visibility == 'hidden' ){
		affiche(id) ; 
		var contenuthisid = document.getElementById(thisid).innerHTML.replace( 'plus.gif' , 'moins.gif' ) ; 
		document.getElementById(thisid).innerHTML = contenuthisid ;
	} else {
		cache(id)
		var contenuthisid = document.getElementById(thisid).innerHTML.replace( 'moins.gif' , 'plus.gif' ) ; 
		document.getElementById(thisid).innerHTML = contenuthisid ;
	}
}


function affiche(id){
	if ( document.getElementById && document.getElementById(id) != null ){
		document.getElementById(id).style.visibility='visible';
		document.getElementById(id).style.display='block';
	}
}

function cache(id){
	if ( document.getElementById && document.getElementById(id) != null ){
		document.getElementById(id).style.visibility='hidden';
		document.getElementById(id).style.display='none';
    }
}

function rcconf(){	//C'est la fonction qui est chargée a chaque chargement de la page
	cache('rappel');
}
Le but de ce JS est juste d'afficher ou de masquer un element, un div pour l'instant seulement.

Sous FireFox, tout va bien, mais sous IE, j'ai une belle page blanche...

Si j'enleve le JS de mon code html, ça s'affiche sous IE...

Si quelqu'un à une idée... je suis preneur...!

Publié : 02 nov. 2006, 09:02
par calimo
Je n'ai aucune idée sur la cause de ton problème, par contre quand tu as un onclick, pense aux gens qui naviguent au clavier et ne cliquent pas : utilise un gestionnaire d'évènement indépendant ou double le d'un évènement clavier.

Un moyen tout simple de contrôler est d'essayer de le faire toi-même au clavier :)
(Attention, les éléments div ne peuvent pas forcément reçevoir le focus et donc ce n'est pas forcément évident de le faire au clavier. Si nécessaire, transforme-le en <a> :wink: )

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7

Publié : 02 nov. 2006, 10:24
par kowalsky
Oui, c'est vrai, j'avais oublié le coup du focus avec le clavier...


Bon, ça ne me change pas mon probleme de page blanche...! :)

Message envoyé avec : Mozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.8.1b2) Gecko/20060910 BonEcho/2.0b2

Publié : 23 janv. 2007, 14:06
par kij_82
document.getElementById() n'est pas accepté par IE il me semble, il faut utiliser document.all pour IE à la place.

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; IE7-01NET.COM-1.1)

Publié : 23 janv. 2007, 14:28
par Asumbaa
kij_82 a écrit :document.getElementById() n'est pas accepté par IE il me semble, il faut utiliser document.all pour IE à la place.
Non, quand même, à partir du 6 (au moins, peut-être le 5.5 déjà) "il" comprend le getElementById... :roll:

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3

Publié : 23 janv. 2007, 16:56
par martin
c'est peut être la propriété css visibility qu'IE ne comprend pas ou mal. Qui plus est elle est inutile ici puisque de toute façon tu règles la propriété display à none.
Essaie d'enlever les lignes traitant visibility.

Publié : 23 janv. 2007, 17:14
par Bobe
Asumbaa a écrit :
kij_82 a écrit :document.getElementById() n'est pas accepté par IE il me semble, il faut utiliser document.all pour IE à la place.
Non, quand même, à partir du 6 (au moins, peut-être le 5.5 déjà) "il" comprend le getElementById... :roll:
Depuis IE 5.0. Soit depuis 8 ans…

Publié : 23 janv. 2007, 21:26
par daemon2a
ça serai pas le ".innerHTML" par hasard. il me semble avoir eu un problème de ce genre déjà

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1