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 :

[POO] Un composant ActiveX ne peut pas créer un objet


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut [POO] Un composant ActiveX ne peut pas créer un objet
    Salut,

    Je cherche à lire un fichier XML pour ressortir les valeurs dans un tableau.

    Rien de difficile jusqu'ici.

    J'ai une fonction servant à lire le XML

    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
    /**
     * Fonction de manipulation XML en Javascript
     *
     * @param String url : URL du fichier XML
     * @param String handler : Fonction qui traitera le flux XML
     **/
    function loadXML(url,handler) {
        //Utilise la technique standard du DOM Niveau 2, si elle est supportée
        if( document.implementation && document.implementation.createDocument ) {
            //Crée un nouvel objet document
            var xmldoc = document.implementation.createDocument( "", "", null );
            //Spécifie ce qui doit arriver après la fin du chargement
            xmldoc.onload = function() { handler(xmldoc, url); }
            //ainsi que l'url à charger
            xmldoc.load(url);               //Commence le chargement
        }
        //Sinon, utilise l'API propriétaire Microsoft pour Internet Explorer
        else if( window.ActiveXObject ) {
            var xmldoc = new ActiveXObject( "Micorosft.XMLDOM" ); //Crée doc
            xmldoc.onreadystatechange = function() { //Spécifie onload
                if( xmldoc.readyState == 4 ) handler(xmldoc);
            }
            xmldoc.load(url);
        }
    }
    Cette fonction est appelée lors du clic sur un lien (onclick).

    Le-dit lien ayant été généré dynamiquement, et IE supportant mal les

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    a.setAttribute('onclick','loadXML("toto","tutu")');
    je suis obligé de faire un appendChild d'abord pour ajouter le lien dans ma page, avant de modifier son onclick comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('lnk' + unId).onclick = function(){loadXML("pages/rubriques.xml", listeRubriques);}
    La fonction listeRubriques, elle, sert à modifier le contenu de la table "tableRubriques", qui au départ ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <table>
        <tbody id="tableRubriques">
        </tbody>
    </table>
    L'id est sur le tbody car IE en rajoute un de manière transparente, et si on laisse l'id sur la table ça provoque des erreurs sous IE.

    Voici listeRubriques:

    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
    /**
     * Construit un tableau HTML des rubriques
     *
     * @param xmldoc : Objet xmldoc renvoyé par xmlLoad()
     **/
    function listeRubriques( xmldoc  ) {
        table = document.getElementById('tableRubriques');
     
        //Trouve tous les marqueurs rub du document xmldoc
        var rubriques = xmldoc.getElementsByTagName("rub");
     
        //Boucle à travers les marqueurs Rub
        for( var i = 0 ; i < rubriques.length ; i ++ ) {
            var rub = rubriques[i];
            if( rub.getAttribute("nom") ) {
                var nom = rub.getAttribute("nom");
                var row = document.createElement( "tr" );
                var cell = document.createElement( "td" );
                cell.appendChild(document.createTextNode(nom));
                row.appendChild(cell);
                table.appendChild(row);
            }
        }
    }
    Elle tourne parfaitement bien sous ffx3, mais pas sous IE7 ou j'obtiens l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    un composant ActiveX ne peut pas créer d'objet.
    Le seul composant activeX que je vois ici serait donc "xmldoc", résultat de "loadXml()" passé en paramètre.

    Je n'ai jamais rencontré ce problème et je sèche complètement.

    Des idées ?

    D'avance merci,

    *.Har(d)t

    EDIT:

    j'ai trouvé une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     var xmldoc = new ActiveXObject( "Micorosft.XMLDOM" );
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     var xmldoc = new ActiveXObject( "Microsoft.XMLDOM" );
    Corrigé, mais maintenant j'ai une nouvelle erreur:

    "Cet objet ne gère pas cette propriété ou cette méthode"

    Saleté d'IE va !

    Je suppose qu'il parle de la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var rubriques = xmldoc.getElementsByTagName("rub");
    mais je suis trop crevé pour m'en occuper ce soir, je rentre à la casa.
    *.Har(d)t
    ---
    "Je donnerais mon bras droit pour être ambidextre"
    Brian W. Kernighan

  2. #2
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Regarde la doc de Microsoft...
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

Discussions similaires

  1. Un composant ActiveX ne peut pas créer un objet
    Par Toulousaing dans le forum VBScript
    Réponses: 4
    Dernier message: 08/10/2010, 23h33
  2. Message d'erreur: Un composant ActiveX ne peut pas créer un objet
    Par amnass dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/05/2009, 07h12
  3. [POO] un composant activex ne peut pas créer un objet
    Par Zebulon777 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 12/03/2008, 15h35
  4. [ADO] Error 429: Un composant activex ne peut pas créer un objet
    Par Pierre Fauconnier dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/05/2006, 06h09
  5. [VS2003] Un composant ActiveX ne peut pas créer un objet
    Par kendras dans le forum Framework .NET
    Réponses: 1
    Dernier message: 28/12/2005, 12h39

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