J'obtiens actuellement une erreur dans le code FacePile de Facebook, et je suis perplexe quant à sa cause.
facepile.php charge un script qui, entre autres choses, a ces lignes (lorsqu'elles sont joliment imprimées) :
...
o = document.createElement('script');
o.src = l[n];
o.async = true;
o.onload = h;
o.onreadystatechange = function() {
if (o.readyState in c) {
h();
o.onreadystatechange = null;
}
};
d++;
a.appendChild(o);
...
(a == document.body, d++ n'est pas pertinent ici)
Ce code charge un script avec src = http://static.ak.fbcdn.net/rsrc.php/v1/yW/r/pmR8u_Z_9_0.js
ou quelque chose d'aussi cryptique (le nom du fichier change de temps en temps).
Dans ce script, il y a ces lignes tout en haut (également lorsqu'elles sont joliment imprimées) :
/*1331654128,176820664*/
if (window.CavalryLogger) {
CavalryLogger.start_js(["\/8f24"]);
}
window.__DEV__ = window.__DEV__ || 0;
if (!window.skipDomainLower && document.domain.toLowerCase().match(/(^|\.)facebook\..*/))
document.domain = window.location.hostname.replace(/^.*(facebook\..*)$/i, '$1');
function bagofholding() {
}
function bagof(a) {
return function() {
return a;
};
}
if (!Date.now)
Date.now = function now() {
return new Date().getTime();
};
if (!Array.isArray)
Array.isArray = function(a) {
return Object.prototype.toString.call(a) == '[object Array]';
};
...
Et je reçois une erreur qui dit "SCRIPT5009 : 'Date' is undefined", juste à l'endroit où se trouve l'erreur. if (!Date.now)
portion. Le débogage près de ce point révèle que Date
, Array
, Object
, Function
etc. sont tous indéfinis.
Euh... comment ? window
existe, tout comme document
(bien que document.body
est nulle) et une poignée d'autres, mais beaucoup d'objets prédéfinis ne le sont pas. Les versions antérieures d'IE ne semblent pas avoir ce problème, ni aucun autre navigateur, mais plusieurs machines exécutant IE9 (y compris une VM propre) ont toutes le même problème.
Je doute de pouvoir y faire quelque chose, mais je suis très Je suis curieux de savoir comment cela se produit / quel est le problème sous-jacent. Quelqu'un le sait-il, ou peut-il m'indiquer quelque chose qui pourrait m'aider ?
-- modifier :
Avant de poster cette question, j'avais trouvé ce site : http://www.guypo.com/technical/ies-premature-execution-problem/
Alors qu'il semblait (et il semble toujours) que ce soit la source du problème, je ne peux pas le reproduire dans de plus petites circonstances. Toutes les combinaisons que j'ai essayées ont toujours Date, etc. définis ; ce qui n'est pas trop surprenant, car sinon, je suis sûr que d'autres personnes verraient beaucoup plus de problèmes avec IE.