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 :

IE9 -> SCRIPT438: Object doesn't support this property or method.


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut IE9 -> SCRIPT438: Object doesn't support this property or method.
    Bonjour tout le monde,

    J'ai un petit souci avec le script ci-dessous et ce uniquement sous IE 9. Cela fonctionne parfaitement sous Firefox, Safari, Chrome et Opera car eux ne chargent pas un objet ActiveX.

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
     
    function ShowDashBoard() {
        // show wait message
        document.getElementById("wait_message").style.visibility = "visible"; //wait message ON
     
        // Clear message content
        document.getElementById("error_msg").textContent = "";
        document.getElementById("success_msg").textContent = "";
        // Hide message boxes
        document.getElementById("error_message_status").style.visibility = "hidden";
        document.getElementById("success_message_status").style.visibility = "hidden";
     
        // Create variables to get mainlog datas
        startday    = document.getElementById('startday').value;
        startmonth  = document.getElementById('startmonth').value;
        startyear   = document.getElementById('startyear').value; 
        endday      = document.getElementById('endday').value;    
        endmonth    = document.getElementById('endmonth').value;  
        endyear     = document.getElementById('endyear').value;   
        startofdate = startday + "-" + startmonth + "-" + startyear;
        endofdate   = endday + "-" + endmonth + "-" + endyear;
        building    = document.getElementById('SelectedBuilding').value;
        userid      = document.getElementById('userid').value;
        userrole    = document.getElementById('userrole').value;
     
        // Select company link to the userrole (Admin or others)
        if (userrole == '1') { company = document.getElementById('SelectedCompany').value; }
        else { company = document.getElementById('company').value; }
     
        // create xmlhttprequest according browser or abort function
        if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } else { alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return; }
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) ShowXMLfile();
        };
     
        var url = "getdashboarddatas.php?SDA=" + startofdate + "&EDA=" + endofdate + "&CPY=" + company +  "&BIN=" + building + "&UID=" + userid + "&URO=" + userrole;
     
        xmlhttp.open("GET", url, true);
        xmlhttp.send(null);
    }
     
    // ***************************************************************
    // Functions which load and show dashboard from XML/XSLT files
    // Load and Show XML File
    function ShowXMLfile() {
     
        // Reset previous Dashboard content
        document.getElementById("dashboardcontent").innerHTML = '';
     
        // reset TextResult
        BuildXMLfileResult = ""; 
     
        BuildXMLfileResult = xmlhttp.responseText;
     
        // check if the build of the dashboard.xml file was done without error.
        if (BuildXMLfileResult == "SUCCESS") {
     
            if(building == "all")
            {
                xmlfile = "data/" + company + "/dashboard.xml";
            }
            else
            {
                xmlfile = "data/" + company + "/" + building + "/dashboard.xml";
            }
            xslfile = "xml/dashboard.xsl";
     
            // Code for Internet Explorer
            if (window.ActiveXObject) {
                var xslDoc;
                var xmlDoc;
                var xlt;
                var xslProc;
     
                // load XSLT sheet
                xslDoc = new ActiveXObject("Msxml2.XSLTemplate.6.0");
                xslDoc.async = false;
                xslDoc.load(xslfile);
     
                //load XML file
                xmlDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.6.0");
                xmlDoc.async = true;
                xmlDoc.onreadystatechange = function () {
                    if (xmlDoc.readyState == 4) {
                        xslProc.transform();
     
                        //show result
                        document.getElementById("dashboardcontent").innerHTML = '';
                        document.getElementById("dashboardcontent").innerHTML = xslProc.output;
                    }
                }
     
                //Transformation
                xslt = new ActiveXObject("Msxml2.XSLTemplate.6.0");
                xslt.stylesheet = xslDoc;
                xslProc = xslt.createProcessor();
                xslProc.input = xmlDoc;
     
                // load XML file in async mode
                xmlDoc.load(xmlfile);
           }
     
            // Code for other browsers using XSLTProcessor()
            else {
                var xsl_http = getXMLHttp();
                var xml_http = getXMLHttp();
                var xsl;
                var xml;
     
                xsl_http.onreadystatechange = function () {
                    if (xsl_http.readyState == 4 && xsl_http.status == 200) {
                        // On récupère le contenu du fichier xsl
                        xsl = xsl_http.responseXML;
                        xml_http.onreadystatechange = function () {
                            if (xml_http.readyState == 4 && xml_http.status == 200) {
                                // Traitement de l'affichage
                                // *************************
     
                                // On récupère le contenu du fichier xml
                                xml = xml_http.responseXML;
                                xsltProcessor = new XSLTProcessor();
                                xsltProcessor.importStylesheet(xsl);
                                // Rendu de l'affichage
                                resultDocument = xsltProcessor.transformToFragment(xml, document);
                                // Affichage dans la page web
                                document.getElementById("dashboardcontent").innerHTML = '';
                                document.getElementById("dashboardcontent").appendChild(resultDocument);
                                // ********************************
                                // Fin de traitement de l'affichage
                            }
                        }
                        xml_http.open("GET", xmlfile, true);
                        xml_http.send();
                    }
                }
     
                xsl_http.open("GET", xslfile, true);
                xsl_http.send();
            }
        }
        else if (BuildXMLfileResult == "ERROR") 
        {
            // Set Error message content
            document.getElementById("error_msg").textContent = "Une erreur s'est produite lors de la construction du fichier XML. Veuillez contacter le support...";
            // Show Error message box
            document.getElementById("error_message_status").style.visibility = "visible";
            document.getElementById("success_message_status").style.visibility = "hidden";
        }
     
     
        // hide wait message
        document.getElementById("wait_message").style.visibility = "hidden"; //wait message OFF
     
    }
     
    // Used to get XML file
    function getXMLHttp()
    {
    	var xmlHttp
    	try
    	{
    		//Firefox, Opera 8.0+, Safari
    		xmlHttp = new XMLHttpRequest();
    	}
    	catch(e)
    	{
    		//Internet Explorer
    		try
    		{
    			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    		}
    		catch(e)
    		{
    			try
    			{
    				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    			catch(e)
    			{
    				alert("Votre navigateur ne permet pas d'utiliser cet outil")
    				return false;
    			}
    		}
    	}
    	return xmlHttp;
    }
    L'erreur survient dans le bloc suivant (la ligne "xslDoc.async = false;") de la fonction ShowXMLfile() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // load XSLT sheet
              xslDoc = new ActiveXObject("Msxml2.XSLTemplate.6.0");
                xslDoc.async = false;
                xslDoc.load(xslfile);
    Le détail du message d'erreur est :

    SCRIPT438: Object doesn't support this property or method
    dashboard.js, line 255 character 13


    Je retourne le Web et ce forum depuis 24 heures mais pas moyen de trouver la solution. Il y a bien sûr des erreurs relevées qui tourne autour de ce message d'erreur qui semble un message d'erreur fourre-tout. Quelques-uns concernent surtout "jquery/Ajax" (Mise à niveau à faire) mais pas directement JavaScript et encore moins avec cette manière standard (me semble-t-il) de créer un objet ActiveX.

    Si l'un de vous a une idée ou une piste, elle est la bienvenue.


    Merci d'avance.


    Alain

  2. #2
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Bonjour !

    Il y a confusion dans le choix des ActiveXObject dans le code :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //load XML file
    xmlDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.6.0");
     
    // load XSLT sheet
    xslDoc = new ActiveXObject("Msxml2.XSLTemplate.6.0");

    Il faut plutôt utiliser :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Pour le XML
    var xmlDoc = new ActiveXObject("MSXML2.DOMDocument.6.0");
    xmlDoc.async = false;
     
    // Pour le XSL
    var xslDoc = new ActiveXObject("MSXML2.FreeThreadedDOMDocument.6.0")
    xslDoc.async = false;

    En revanche l'ActiveX pour déclarer le XSLT est bon

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    J'ai trouvé (à l'aide d'un ami ) la solution. La voici :

    Remplacé toutes les lignes 68 à 140 par les lignes suivantes :

    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
     
            // Create XML and XSL Object
            xmlDoc = loadXMLDoc(xmlfile);
            xslDoc = loadXMLDoc(xslfile);
     
            // code for IE
            if (window.ActiveXObject)
            {
                dashboard = xmlDoc.transformNode(xslDoc);
                document.getElementById("dashboardcontent").innerHTML = dashboard;
            }
            // code for Mozilla, Firefox, Opera, etc.
            else if (document.implementation && document.implementation.createDocument)
            {
              xsltProcessor=new XSLTProcessor();
              xsltProcessor.importStylesheet(xslDoc);
              resultDocument = xsltProcessor.transformToFragment(xmlDoc,document);
              document.getElementById("dashboardcontent").appendChild(resultDocument);
            }
    ça marche tip-top (comme on dit par ici)

    Bonne journée.

    Alain

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

Discussions similaires

  1. [AC-2010] Erreur 438 object doesn't support this property
    Par meritites dans le forum Access
    Réponses: 3
    Dernier message: 30/10/2014, 10h23
  2. Object doesn't support avec IE8
    Par voyageurdumonde dans le forum jQuery
    Réponses: 3
    Dernier message: 29/06/2012, 01h08
  3. [JavaScript + Flash] Object doesn't support this property or method
    Par messier79 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/09/2011, 20h43
  4. Object does not support this property or method
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/05/2011, 16h10
  5. error sur page "Object doen't support this property"
    Par Javix dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 08/01/2009, 10h43

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