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:
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:
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