«Дата» не определена в IE9 в javascript, загруженном FacePile

В настоящее время я получаю сообщение об ошибке в коде Facebook FacePile, и я озадачен ее причиной.

facepile.php загружает скрипт, который, среди прочего, содержит следующие строки (в красивом виде):

...
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++ здесь не имеет значения)

Этот код загружает скрипт с src = http://static.ak.fbcdn.net/rsrc.php/v1/yW/r/pmR8u_Z_9_0.jsили что-то столь же загадочное (имя файла иногда меняется).

В этом скрипте есть эти строки в самом верху (также если они красиво напечатаны):

 /*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]';
  };
...

И я получаю сообщение об ошибке, которое гласит: «SCRIPT5009: 'Дата' не определена», прямо в if (!Date.now)часть. Отладка вблизи этой точки показывает, что Date, Array, Object, Functionи т. д. не определены.

Э... как? windowсуществует, как и document(хотя document.bodyимеет значение null) и несколько других, но множество предопределенных объектов отсутствуют. Более ранние версии IE, похоже, не имеют этой проблемы, как и другие браузеры, но несколько компьютеров с IE9 (включая чистую виртуальную машину) имеют одну и ту же проблему.

Сомневаюсь, что смогу что-нибудь с этим поделать, но мне оченьлюбопытно, как это происходит/в чем заключается основная проблема. Кто-нибудь знает, или они могут указать мне на что-то, что может помочь?

-- изменить:

Перед публикацией этого вопроса я нашел этот сайт: http://www.guypo.com/technical/ies-premature-execution-problem/

Пока это казалось (и до сих пор кажется), что это может быть источником проблемы, я не могу воспроизвести это при каких-либо меньших обстоятельствах. Все комбинации, которые я пробовал, по-прежнему имеют дату и т. д.; что не так уж удивительно, иначе я уверен, что другие столкнутся с еще большим количеством проблем с IE.

14
задан Groxx 2 October 2013 в 01:25
поделиться