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

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
kowalsky
Gecko
Messages : 58
Inscription : 11 juil. 2006, 20:24

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

Message 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...!
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message 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
kowalsky
Gecko
Messages : 58
Inscription : 11 juil. 2006, 20:24

Message 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
kij_82

Message 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)
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Message 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
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message 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.
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message 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…
« La vie d’un geek est un combat perpétuel contre l’imperfection »
daemon2a

Message 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
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 5 invités