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 :

Fichier .js ne fonctionnant pas sous ie6


Sujet :

JavaScript

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut Fichier .js ne fonctionnant pas sous ie6
    Bonjour!
    Sur mon site web, j'appelle dans le header un fichier biblio.js contenant toutes les fonctions javascript nécessaires.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script language="Javascript" type="text/javascript" src="script/biblio.js" ></script>
    Jusque là, ça va...
    J'ai ajouté récemment quelques fonctions, tout fonctionne en local sur ie6, ie7, firefox, mais en ligne ça ne fonctionne pas uniquement sur ie6.
    Le fichier js n'est pas pris en compte par ie6, ce qui fait planter tout le js sur le site -_-

    Les fonctions en questions sont :
    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
     
    //fonction permettant de changer le display à block, de toutes les balises possédant le nom de la classe indiquée
    function changeDisplayByClass(class_name)
    {
    	for (i=0; i<document.getElementsByTagName("*").length; i++) {
    		 if (document.getElementsByTagName("*").item(i).className == class_name){
    	   		document.getElementsByTagName("*").item(i).style.display="block";
    		 }
    	}
    }
     
    //fonction permettant de récupérer le texte des div ayant la classe indiquée
    function recoverStringByClass(class_name)
    {
    	var texte = "";
    	for (i=0; i<document.getElementsByTagName("*").length; i++) {
    		 if (document.getElementsByTagName("*").item(i).className == class_name){
    	   		texte += document.getElementsByTagName("*").item(i).innerHTML;
    		 }
    	}
     
    	return texte;
    }
     
    //fonction qui écrit dans le div spécifié
    function writediv(texte,id) 
    {
         document.getElementById(id).innerHTML = texte;
    }
    Le plus surprenant, c'est qu'en local sur ie6, à la base ça ne marchait pas, et suite à une erreur de manip, je me suis rendu compte qu'il fallait mettre le crochet ouvrant de la fonction writediv, dans la ligne du dessous (j'ai pas compris du tout pourquoi...)

    (au lieu de :
    function writediv(texte,id) {

    il fallait mettre :
    function writediv(texte,id)
    {

    et cela a fonctionné... en local)

    Par contre cela ne fonctionne toujours pas en ligne, et j'ai repéré dans la 2e fonction que si j'enlève le " return texte; ", le fichier est bien pris en compte!
    Je n'y comprend vraiment rien à cette histoire de fou, en général je ne poste jamais mes problèmes, mais là ça me dépasse! Un peu d'aide serait la bienvenue

    P.S. : je ne parle même pas de la fonctionnalité des fonctions, mais bien de l'inclusion dans le fichier .js, en effet ie6 me dit qu'un objet est attendu et donc que l'inclusion du fichier .js ne fonctionne pas lorsqu'il y a le "return". La page testée n'utilise pas ces fonctions.
    Merci ^^

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    les 2 erreurs évoquées n'en sont pas. Il s'agit vraisemblablement de la conséquence indirecte mais visible d'une véritable erreur (une "}" manquante dans le code précédent, par ex.).

    Sinon, est-ce que le "div" de ta fonction writediv() ne correspond pas au name d'un autre élément de la page ?

    A+

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Bonjour,
    les 2 erreurs évoquées n'en sont pas. Il s'agit vraisemblablement de la conséquence indirecte mais visible d'une véritable erreur (une "}" manquante dans le code précédent, par ex.).
    Si j'ai bien compris, tu penses qu'il y aurait une "{" ouverte précédemment dans le code non refermée? Mais dans ce cas, je ne vois pas trop pourquoi mettre le crochet "{" dans la ligne du dessous a changé...

    Citation Envoyé par E.Bzz Voir le message
    Sinon, est-ce que le "div" de ta fonction writediv() ne correspond pas au name d'un autre élément de la page ?
    Négatif chef! Je ne parle pas du fait que cette fonction marche ou pas, mais simplement du fait qu'elle faisait planter l'inclusion du fichier biblio.js

    D'ailleurs, la fonction ne marche pas pour autant sur ie6... mais ça c'est encore un autre problème ^^

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (document.getElementsByTagName("*")[i].className == class_name)
    est préférable à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (document.getElementsByTagName("*").item(i).className == class_name)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Effectivement, je vais modifier ma fonction en conséquence, merci ^^
    Par contre cela ne résoud pas mon soucis
    Le problème est peut-être localisé autre part que sur ces fonctions, mais je ne comprend pas pourquoi tout marchait correctement sur ie6 avant du coup... Je continue mes recherches, je vous tiendrais au courant si je trouve.

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Kikkoman Voir le message
    Si j'ai bien compris, tu penses qu'il y aurait une "{" ouverte précédemment dans le code non refermée?
    Non, c'est un exemple car les "erreurs" que tu "vois" n'en sont pas

    A+

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Non, c'est un exemple car les "erreurs" que tu "vois" n'en sont pas

    A+
    D'accord, mais alors comment se fesse que cela ne fonctionne pas? Je veux dire, si ce ne sont pas des erreurs, cela devrait fonctionner non? Ou bien c'est juste ie6 qui bug rien que pour m'ennuyer lol

    Plus sérieusement, j'ai essayé d'enlever et de remettre mes 3 fonctions du fichier biblio.js.
    Ie6 ne détecte aucune erreur js quand elles n'y sont pas, et détecte que class_name et id sont indéfinis lorsque je les rajoute. Encore des pseudo erreurs? Du coup mon problème est de réparer des erreurs qui n'en sont pas, mouarf c'est tendu!

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Kikkoman Voir le message
    D'accord, mais alors comment se fesse que cela ne fonctionne pas? Je veux dire, si ce ne sont pas des erreurs, cela devrait fonctionner non?
    Non, car ce que je voulais dire c'est qu'il y a bien des erreurs (puisque ça ne fonctionne pas), mais que celles que tu pointais n'en était pas. Pour reprendre mon "exemple", quand tu oublies une "}" dans un .js l'erreur est souvent signalée sur la dernière ligne du .js alors qu'elle est bien avant.
    Citation Envoyé par Kikkoman Voir le message
    Ou bien c'est juste ie6 qui bug rien que pour m'ennuyer lol
    C'est bien ça, mais il le fait à tout le monde

    Citation Envoyé par Kikkoman Voir le message
    Ie6 ne détecte aucune erreur js quand elles n'y sont pas, et détecte que class_name et id sont indéfinis lorsque je les rajoute. Encore des pseudo erreurs?
    Pour vérifier, change "id" (identifiant mal choisi car déjà utilisé par le nav) en "un_id" par exemple.
    Pour class_name ça m'étonne, mais peut-être qu'IE6, dans sa grande rigueur, l'utilisait déjà
    Essaye "nom_class"

    A+

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Pour class_name ça m'étonne, mais peut-être qu'IE6, dans sa grande rigueur, l'utilisait déjà
    Essaye "nom_class"
    les variables mammouth et poil sont indéfinies ^^
    Ie6 ne comprend même plus le paramètre de la fonction, c'est pas mal ça...

  10. #10
    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
    Montre-nous comment sont appelées les fonctions (un peu de html)

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bon !
    Citation Envoyé par Kikkoman Voir le message
    Plus sérieusement, j'ai essayé d'enlever et de remettre mes 3 fonctions du fichier biblio.js.
    Ie6 ne détecte aucune erreur js quand elles n'y sont pas, et détecte que class_name et id sont indéfinis lorsque je les rajoute.
    Si tu mets ces 3 fonctions dans le <head> de la page (au lieu du biblio.js) tu as toujours ces erreurs ?
    et
    On peut voir les appels de ces fonctions ?

    A+

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Kikkoman Voir le message
    Ie6 ne comprend même plus le paramètre de la fonction
    Il te dit ça sous quelle forme ?
    Un cri de ptérodactyle ?

    A+

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Montre-nous comment sont appelées les fonctions (un peu de html)
    Eh bien justement, les fonctions ne sont même pas appelées sur cette page (et les autres pages du site), elles bloquent juste l'inclusion normale du fichier biblio.js, du coup, toutes mes autres fonctions de ce fichier sont indisponibles.

    Citation Envoyé par E.Bzz
    Si tu mets ces 3 fonctions dans le <head> de la page (au lieu du biblio.js) tu as toujours ces erreurs ?
    et
    On peut voir les appels de ces fonctions ?
    Citation Envoyé par E.Bzz
    Il te dit ça sous quelle forme ?
    Un cri de ptérodactyle ?
    Oui, toujours les mêmes erreurs. En fait, j'ai téléchargé un debugger javascript pour ie6 qui me donne les erreurs de façon claire, donc il me dis : Line: 500
    Character: 4
    Code: 0
    Error Message: 'class_name' est indéfini.

    Je suppose que c'est la réécriture de l'erreur qui apparait tout en bas à gauche quand on active de deboggage sur ie.
    Je me suis dis qu'il y avait peut-etre conflit entre ce debugger et ie, mais j'ai pu vérifier que cela ne fonctionne tout de même pas sur une version non customiée de ie6.

  14. #14
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Quelle est la ligne 500 dans le code de ton 1° post (class_name apparait plusieurs fois, mais visiblement une seule pose problème) ?

    Et
    Citation Envoyé par E.Bzz Voir le message
    Si tu mets ces 3 fonctions dans le <head> de la page (au lieu du biblio.js) tu as toujours ces erreurs ?


    A+

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Quelle est la ligne 500 dans le code de ton 1° post (class_name apparait plusieurs fois, mais visiblement une seule pose problème) ?

    Et

    A+

    La ligne 500 est dans la première fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function changeDisplayByClass(class_name)
    {
    	for (i=0; i<document.getElementsByTagName("*").length; i++) {
    		 if (document.getElementsByTagName("*").item(i).className == class_name){
    	   		document.getElementsByTagName("*").item(i).style.display="block";
    		 }
    	}
    }
    Bon je crois que je vais tout simplement mettre les fonctions là où je les appelles, d'habitude j'aime pas la bidouille mais quand on y est forcé... Du coup ça ne fera foirer que cette page là. C'est pas top mais bon, je ne peux pas trop me permettre de passer 2 jours complets sur ce problème

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Bon bah j'ai "trouvé" ...
    En fait, ce sont les caractères accentués dans les commentaires qui ont fait foiré les fonctions...
    Ne me demandez pas pourquoi, j'en ai strictement aucune idée ^^

    En tout cas merci pour vos réponses!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/03/2011, 15h39
  2. [DOM] attachEvent() ne fonctionne pas sous IE6
    Par mickael28 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 20/03/2009, 08h57
  3. [XHTML 1.0] Map ne fonctionne pas sous ie6
    Par goldor dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 19/12/2008, 19h59
  4. Dropdown menu ne fonctionne pas sous IE6
    Par Maggus dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 20/06/2008, 13h47
  5. button:hover ne fonctionne pas sous IE6
    Par mathieugamin dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 16/05/2007, 11h34

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