11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je suis face à un problème d'affichage de javascript avec IE8.
En effet, pour donner un aspect un peu dynamique à une page calendrier, j'ai fait appel à un script (préparé par mon époux, moi je ne connais pas du tout ce langage, je ne m'occupe que des css) qui fonctionne très bien sous Firefox, Opera et Safari sous Windows.
Avec IE8, lorsque l'on clique sur les onglets, en tout premier lieu ils se décalent mais ils ont ensuite le bon goût d'aller me coller en haut à gauche de la page des encadrés colorés qui correspondent auw <span>s appelés pour l'occasion.
Voici la page incriminée :

'Calendrier'

Et ma question:

Est-il possible d'appeler la feuille de script pour tous les navigateurs excepté IE? (comme les feuilles de style en commentaires conditionnels...)

Et éventuellement, si vous comprenez où ça coince dans le script, je suis preneuse aussi. Je soumettrai la solution à mon époux ensuite.
D'avance merci.



P.S. : Toujours aussi utile et intéressant ce forum Smiley cligne
Tu peux utiliser la méthode classique pour appeller un fichier juste pour IE. De cette façon tout ce que tu écriras dans ce fichier (si l'appelle pour IE est bien placé APRES l'appelle du fichier classique) va ecraser les anciennes valeurs pour IE...

Premier CSS
-background = black;
-color = orange;

CSS IE
-background = white;


Dans ce cas, IE affichera le texte en orange et le fond en blanc (le blanc du fichier IE écrase le noir du fichier classique) alors que les autres navigateurs vont écrire orange sur noir.
Bonsoir,

Je ne suis pas sur un problème de lien de feuille de style pour IE, je sais déjà comment faire. Smiley smile
Je souhaite savoir s'il est possible d'appeler une feuille de script pour exécuter un javascript sur ma page pour tous les navigateurs SAUF pour IE.
Salut,

ben loin de moi l'idée d'être désagréable avec ton époux ( Smiley lol ) mais le code JavaScript :
* est intrusif (s'il est désactivé les "liens" sont inactifs).
* plante sur tous les mois qui n'ont pas de correspondance dans l'agenda.

En bref il serait à revoir après lecture du tuto : Comment bien coder en Javascript.

Par ailleurs vouloir empêcher le JS pour IE démontre qu'il y a une erreur de codage car c'est anormal. En l'occurrence le problème vient du htc qui est justement dédié à IE et affecté à un mauvais élément (comme il est tard j'ai la flemme de chercher plus loin lequel).

Pour finir c'est également anormal d'avoir un commentaire conditionnel qui cible toutes les versions d'IE pour charger une css qui ne contient pas que les déclarations spécifiques du behavior htc... et même dans ce cas il serait plus logique de cibler lte IE 8.
Re',

en rejetant un œil il semblerait que le behavior htc continue de générer un cadre arrondi sur les SPAN .h4 alors que le paragraphe les contenant est en display:none. Smiley rolleyes

Je suppose qu'il suffirait de supprimer cette classe lors d'un display:none puis de la remettre lors d'un display:block (en ciblant avec firstChild JavaScript) pour régler le problème.


Au passage en plaçant ces paragraphes dans un élément DIV id="agenda" le JavaScript de base deviendrait bien plus simple :
function changerTousMois(mode) {
	lMois = document.getElementById('agenda').getElementsByTagName('P');
	for(var iM = 0; iM < lMois.length; iM ++) {
		lMois[iM].style.display = mode;
	}
}
	
function afficherMois(mois) {
	changerTousMois('none');
	if(document.getElementById(mois)) document.getElementById(mois).style.display = 'block';
}

Modifié par Heyoan (28 Feb 2010 - 11:16)
Merci pour ta réponse Heyoan, je vais voir avec mon époux pour qu'il corrige et voir ce que ça donne. Pour le htc, je l'avais mis avant de penser à utiliser du javascript, et pour la feuille de style IE, comme je n'ai pas la possibilité de tester sur le pc à la fois IE6, IE 7 et IE8, j'ai mis la feuille de css pour tous les IE. (est-ce vraiment gênant?)
J'avoue ne pas trop comprendre ce que tu veux dire pour le div agenda juste pour utiliser le javascript. En fait, il faudrait que je le mette dans le div #main pour l'isoler et, et après je ne sais pas trop, alors je vais essayer. Smiley biggol
Mais je ne comprends pas pourquoi il faudrait 'jouer' avec le display de la classe .h4 pour ne pas avoir des cadres qui s'éparpillent. Je tente ce dont tu me parles et je verrai ensuite, je ne suis pas développeuse de formation, alors parfois je patouille avant de comprendre. Smiley murf
Mag a écrit :
Pour le htc, je l'avais mis avant de penser à utiliser du javascript
En fait le htc est déjà du JavaScript. Smiley cligne

Mag a écrit :
pour la feuille de style IE, comme je n'ai pas la possibilité de tester sur le pc à la fois IE6, IE 7 et IE8, j'ai mis la feuille de css pour tous les IE. (est-ce vraiment gênant?)
Pas vraiment pour le htc puisqu'il concerne également IE8 qui ne reconnaît pas non plus le border-radius mais ça l'est si tu fais également d'autres corrections CSS puisque IE8 respecte les normes CSS 2.1 et qu'il ne nécessite pas de correctifs.

Mag a écrit :
J'avoue ne pas trop comprendre ce que tu veux dire pour le div agenda juste pour utiliser le javascript.
Je parle de placer les paragraphes de chaque mois (<p id="march"> jusqu'à <p id="december">) dans un DIV id="agenda" et de tester mon code JS.
Merci pour ces précisions. Je vais me remettre dedans (dès que je vais retrouver du temps) et essayer ta solution. Smiley smile