Journal Internet Explorer et Javascript

Posté par  .
Étiquettes : aucune
0
31
août
2005
Déjà que je n'aimait pas Internet Explorer, cette haïne a atteint sont apogée depuis deux jours à faire du javascript qui doit être compatible avec plusieurs navigateurs!

if (document.all) //Méthode Internet Explorer merdeuse
inputNode = document.createElement('');
else //Méthode compatible W3C
{
inputNode = document.createElement('input');
inputNode.type = 'radio';
inputNode.name = 'questionreponse' + questionCourante;
inputNode.id = 'questionreponse' + questionCourante;
inputNode.value = 'non';
}

Explorer ne veut rien savoir de mettre un nom à un noeud créé dynamiquement et ça cause problème pour les groupe de boutons radio... Il faut créer un noeud ak du HTML comme paramètre, bien entendu, ceci n'est compatible qu'avec IE! Quelle cochonnerie!

Désolé pour cette saute d'humeur publique...
  • # Sauf qu'elle n'est pas publique ...

    Posté par  (site web personnel) . Évalué à 6.

    Une saute d'humeur publique c'est dans un journal public. Là c'est un journal privé, donc c'est une saute d'humeur privé et c'est sa place, quoi que puissent en dire les lecteurs !
    • [^] # Re: Sauf qu'elle n'est pas publique ...

      Posté par  . Évalué à 2.

      Comment on fait pour rendre un journal public?
      • [^] # Re: Sauf qu'elle n'est pas publique ...

        Posté par  (site web personnel) . Évalué à 2.

        Lors de la création, si tu y es authorisé (je crois que ça dépend de la pertinence moyenne de tes interventions), tu peux choisir entre privé et public.
      • [^] # Re: Sauf qu'elle n'est pas publique ...

        Posté par  . Évalué à 3.

        on coche ou décoche une case lors de sa création, je sais plus mais il parait qu'il faut avoir un karma minimum pour avoir le droit de s'exprimer publiquement, pour éviter que des blairs se créent un compte exprès pour foutre la merde. Mais bon c'est con car il suffit au blair en question de poster quelques commentaires consensuels et hop hop hop. Enfin ça en calme une partie peut-être.
        • [^] # Re: Sauf qu'elle n'est pas publique ...

          Posté par  . Évalué à 2.

          Ça doit être pour ça car je n'ai pas cette case! Je crois l'avoir déjà eu mais ça fait un bout de temps que je n'ai pas posté.
        • [^] # Re: Sauf qu'elle n'est pas publique ...

          Posté par  . Évalué à 5.

          Ce système est aussi très sympatique pour les gens qui ont eu le malheurs d'avoir un sens de l'humour incompatible avec le sens de l'humour de certains autres. Le résultat étant une forte diminution de son karma et une plus forte hésitation à humoristiquiser les commentaire...


          -- Pierre Tramo, Jayce, MultiDeskOS est blo
          • [^] # Re: Sauf qu'elle n'est pas publique ...

            Posté par  . Évalué à -5.

            Bah moi sans sortir d'humour ou de conneries ces derniers mois, je peux même plus poster de commentaire...

            J'en suis arrivé a me créer un second compte pour poster, c'est nul...
            • [^] # Re: Sauf qu'elle n'est pas publique ...

              Posté par  . Évalué à 1.

              Bah moi sans sortir d'humour ou de conneries ces derniers mois, je peux même plus poster de commentaire

              Ton pseudo me rappelle quelque chose... ta signature (si je me souviens bien) mendiait des "pertinentages".... ça avait une "légère" tendance à m'irriter et provoquer un "inutilisage" systématique...

              D'ailleurs, je suis toujours irrité ...... [-]
  • # Solution ?

    Posté par  (site web personnel) . Évalué à 2.

    C'est pas sur a 100% mais ca marche normalement (astuce de mon ami jamesnoone)

    // code valable pour ie et navigateur Gecko
    inputNode = document.createElement('input');
    inputNode.setAttribute('type','radio');
    inputNode.setAttribute('name', 'questionreponse' + questionCourante);
    inputNode.setAttribute('id','questionreponse' + questionCourante);
    inputNode.setAttribute('value','non');
    //NB pour l'attribut 'class' sous IE qui est tres enervant il faut utiliser 'className'
    // pour les evenement style 'onclick' la c'est pire il faut revenir a inputNode.onclick = fonctionEvement; Mais ie se comporte normalement là
    • [^] # Re: Solution ?

      Posté par  . Évalué à 1.

      Au début je le faisait de cette façon mais ça ne fonctionne pas plus! Comme je l'ai dit, IE n'accepte pas que l'on mette un nom à un element créé dynamiquement de cette façon, seulement en plaçant le code HTML du input complètement dans createElement. Je ne suis pas le seul à avoir eu ce problème!
    • [^] # Re: Solution ?

      Posté par  . Évalué à 1.

      N'oublions pas que la création d'élements DOM est la méthode la plus lente sur tous les navigateurs, et doit être utilisée avec parcimonie : le innerHTML reste le plus rapide.

      Malgré tout, si seule cette version marche, alors il n'y a pas a hésiter.
      • [^] # Re: Solution ?

        Posté par  . Évalué à 1.

        IE n'accepte pas la modification du innerHTML d'un tag et même d'un tag . Il me fait une erreur javascript qui est beaucoup moins claire que ce que la console de débogage FireFox peut donner comme erreur... De plus, si j'utilise innerHTML sous FireFox et que j'ai fait des choix sur les radio, mes choix se réinitialisent lorsque j'ajoute une nouvelle ligne au tableau, mais pas si je passe par la création d'éléments DOM!
      • [^] # Re: Solution ?

        Posté par  (site web personnel, Mastodon) . Évalué à 2.

        sauf que innerHTML, c'est pas standard du tout il me semble. Et puis d'un point de vue conceptuel, c'est horrible.
  • # id unique

    Posté par  (site web personnel) . Évalué à 5.

    Je passe aussi beaucoup de temps à faire du javascript pour le boulot, et IE est effectivement très pénible.

    Je reviens juste sur un truc : Comme tu fais des boutons radio, je suppose que le but est d'en créer plusieurs avec le même attribut "name". Dans le bout de code que tu donnes tu mets la même chose dans le name et dans l'id, ce qui laisse penser que tu vas créer plusieurs elements avec le même id. (pâââââs bien)
    • [^] # Re: id unique

      Posté par  . Évalué à 1.

      Pour le ID je sais! J'était un peu désespéré de trouver une solution rapidement mais je les ai enlevé rapidement car c'était inutile de les garder! ;)
  • # Même combat ici ...

    Posté par  . Évalué à 8.

    P...n, mais qu'est ce que ça peut me gaver les technos Microsoft. Dans l'absolu, c'est supaire tip top over too bien, on te dit que ça permet d'avoir un retour sur investissement dès le premier quart d'heure d'utilisation, des gains de productivité qui te permetront de passer 2 fois plus de temps devant la machine à café, et des performances encore plus meilleures que bien, comparée à la concurence qui n'existe plus.

    Dans la pratique, on tombe toujours sur un bug de merde qui plombe le développement de quelques jours (pour rester gentil), qu'une bande d'illumés, prétendu programmeur, sévissant à Redmond, ose appeler "fonctionnalité". Sauf que pour les pauvres mortels, ça se traduit par des tartines de code imbitable pour contourner ce que ces atrophiés de l'encéphale, englués dans leur vision markétoïde, font pour pourrir l'interopérabilité.

    Mon petit coup de gueule, moi qui vient de passer 5 jours à optimiser un pauvre programme C qui marchait super bien sous Linux, mais était une vraie bouse sous Windows 2000, pour contourner tous ces foutus bugs^Wfeatures.

    PS : Pour revenir à IE, le boulet d'or, c'est sans conteste IE 5 pour Mac : le navigateur n'est plus supporté par Microsoft, il est pas mal buggé et reste incontournable sous Mac OS 9 (qui n'est plus supporté par Apple). Quand on voit la durée de vie des Macs, j'me dit que cette daube n'a pas finit de me pourrir la vie.
    • [^] # Re: Même combat ici ...

      Posté par  . Évalué à 1.

      Mon petit coup de gueule, moi qui vient de passer 5 jours à optimiser un pauvre programme C qui marchait super bien sous Linux, mais était une vraie bouse sous Windows 2000, pour contourner tous ces foutus bugs^Wfeatures.

      Le bug dans ce cas ci, c'est l'auteur qui est pas foutu de faire du code portable, pas l'OS.
      • [^] # Re: Même combat ici ...

        Posté par  . Évalué à 3.

        Arf, le redmondiste qui nous sort ses crocs.

        Révise tes classiques :
        - Les WinSock utilisent l'interface BSD, incompatible avec POSIX (fdopen marche pas). Il a fallu que je réécrive les entrées/sorties de certaines libs (jpeg, png qui utilisent stdio) rien que pour ça (1/2 jour de perdu).
        - La p...n de conversion des \n et \n\r. Complétement oublié ce bug^W^Wcette feature. 1/2 jour de perdus pour débugger et retrouver un appel non portable, spécifique Windows (retrouvé dans les sources de perl, d'ailleurs).
        - Pour avoir des perfs potables, il a fallu que je mettre en place un système de cache multi-threadé, en utilisant l'API win32 (les pthreads, c'est pas trop ça). Bonjour, les emm..des pour vérifier que toutes les libs étaient reentrantes.

        Je parie qu'avec Win32, les MFC ou truc net, je n'aurais pas eu tous ces problèmes. Mais bon, on a dit portabilité.
        • [^] # Re: Même combat ici ...

          Posté par  . Évalué à -3.

          Les WinSock utilisent l'interface BSD, incompatible avec POSIX (fdopen marche pas). Il a fallu que je réécrive les entrées/sorties de certaines libs (jpeg, png qui utilisent stdio) rien que pour ça (1/2 jour de perdu).

          C'est pas un bug, c'est une difference de conception entre 2 OS qui n'ont pas grand-chose en commun.

          La p...n de conversion des \n et \n\r. Complétement oublié ce bug^W^Wcette feature. 1/2 jour de perdus pour débugger et retrouver un appel non portable, spécifique Windows (retrouvé dans les sources de perl, d'ailleurs).

          Pas un bug non plus, c'est une difference d'implementation aussi.

          Pour avoir des perfs potables, il a fallu que je mettre en place un système de cache multi-threadé, en utilisant l'API win32 (les pthreads, c'est pas trop ça). Bonjour, les emm..des pour vérifier que toutes les libs étaient reentrantes.

          De meme, pas un bug, difference d'implementation aussi.

          Bref, toutes tes plaintes font reference au fait que Windows et Unix sont differents, aucun n'est du a un bug de Windows. Va donc te plaindre aupres de la bonne personne : toi-meme.
          • [^] # Re: Même combat ici ...

            Posté par  . Évalué à 2.

            Et moi qui coyait que Windows (NT,2000,XP,...) étais conforme à Posix... On m'aurait menti ?
            • [^] # Re: Même combat ici ...

              Posté par  . Évalué à 1.

              Il y a un sous-systeme Posix dans W2k/NT4, mais conforme a une ancienne version de la norme, et je suis meme pas sur qu'il soit dans WS03/XP.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.