IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Compatibilité du code avec IE(6,7)


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut Compatibilité du code avec IE(6,7)
    Bonjour,

    J'ai codé l'ensemble d'un site avec Firefox et firebug (Dieu merci ils existent !).

    Me voilà au moment fatidique de la compatibilité avec IE. Je m'y suis peut-être très mal pris de seulement regarder ça à la fin.

    Voilà un bout de code qui fonctionne très bien sous Firefox, mais qui ne marche pas du tout sous IE.

    Pourriez-vous m'aiguiller sur ce qui ne passe pas sous IE ? Je suis perdu
    J'ai simplifié au maximum et toujours rien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    var handle1=null;
    String.prototype.trim = function () {
       return this.replace(/(^\s*)|(\s*$)/g,"");
    }
    
    window.onload=function()
    {
    	mesTD=document.getElementsByTagName("td"); 
    	for(i in mesTD)
    	{
    		mesTD[i].onclick=function(){clicTD(this);}
    	}
    }
    
    function clicTD(zis)
    {
    	var nom = document.getElementById('nom').innerHTML.toUpperCase();
    	if (zis.innerHTML.trim() == "")
    	{
    		zis.innerHTML = nom;
    	}
    	else if (zis.innerHTML.trim() == nom)
    	{
    		zis.innerHTML = "";
    	}
    	else
    	{
    		//alert(zis.innerHTML);
    	}
    }
    L'effet est simple. Quand on clique sur une cellule, on ajoute son nom dedans. Lorsqu'on clique à nouveau, le nom est supprimé.

    Avant même de remettre la partie ajax (mise à jour bdd), le code javascript ci-dessus ne marche pas sous IE.

    Merci,

  2. #2
    Membre régulier Avatar de Lideln75
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 111
    Points : 102
    Points
    102
    Par défaut
    Je sais que IE bug quand on déclare un objet avec une virgule en trop, mais dans ton code je ne vois pas de souci à première vue.

    Il y a des outils pour debugger sous IE.

    Et je te conseille aussi jQuery qui te simplifiera grandement la vie !
    (compatibilité automatique tous navigateurs)

    Un problème avec le prototype peut-être ? Essaie sans utiliser le trim() et sans déclarer toute la modification du prototype.

    (jQuery possède une fonction trim() intégrée)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    J'ai essayé sans le trim, ça ne passe pas non plus.

    Je désespère, il ne me reste plus que cette fonction qui bug

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Salut,

    Essaye en remplaçant le for in dans le onload :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    window.onload=function()
    {
    	mesTD=document.getElementsByTagName("td");
    	nbTD=document.getElementsByTagName("td").length;
    	for(i=0; i<nbTD; i++)
    	{
    		mesTD[i].onclick=function(){clicTD(this);}
    	}
    }

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    Bon ben ça marche. Merci pour ce premier pas !

    Il semblerait que j'ai des problèmes avec les nextSibling qui ne sont pas pris en compte par IE.
    Des infos là dessus au passage ? :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function clicTD(zis)
    {
    	var nom = document.getElementById('nom').innerHTML.toUpperCase();
    	if (zis.innerHTML.trim() == "")
    	{
    		zis.innerHTML = nom;
    		sauvegarder (zis.nextSibling.nextSibling.innerHTML, nom);
    	}
    	else if (zis.innerHTML.trim() == nom)
    	{
    		zis.innerHTML = "";
    		sauvegarder (zis.nextSibling.nextSibling.innerHTML, nom);
    	}
    	else
    	{
    		alert(zis.innerHTML);
    	}
    }
    Firefox récupère, IE non.

    Pour chaque appel de la fonction, j'ai un td "visible" (la cellule du tableau à afficher quoi), et derrière un td "caché" où je mets les infos que je veux faire circuler par ajax.

    J'vois pas comment j'pourrais faire autrement :s

    [Edit] En fait j'ai fais passer toutes les infos requises pour AJAX dans l'id de la td visible... Plus pratique xD

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par jean1190 Voir le message
    Il semblerait que j'ai des problèmes avec les nextSibling qui ne sont pas pris en compte par IE.
    Des infos là dessus au passage ? :p
    Oui, dans la FAQ !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    En fait j'ai fais passer toutes les infos requises pour AJAX dans l'id de la td visible... Plus pratique xD

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. compatibilité de code avec IE 6 alignement
    Par pierrot2908 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2009, 17h56
  2. Comment linker avec odbc32.lib dans le code ? (avec gcc)
    Par _Audrey_ dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 06/11/2008, 17h40
  3. help sur un petit code avec XMLHttpRequest et setTimeout
    Par grinder59 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/10/2005, 10h22
  4. compatibilité des réels avec pascal (pour fichier de record)
    Par jacquesberger dans le forum Langage
    Réponses: 2
    Dernier message: 12/08/2005, 19h58
  5. [UML] génération de code avec omondo.uml
    Par RENAULT dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 31/10/2003, 13h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo