Динамический (2 уровня) JavaScript / CSS Загрузка IE6 - PullRequest
0 голосов
/ 05 июля 2010

Я пытаюсь динамически включать файлы js (и css) в веб-страницу следующим образом: index.html -> loader_a.js -> a_foo.js, a_bar.js, a_foo.css и т. д.
Хотя это работает без проблем в FF (используя appendChild), я не могу заставить его работать в IE6. Я пробовал различные доступные решения (добавление в dom-узел, вызов ajax и eval и т. Д. Из (http://ntt.cc/2008/02/10/4-ways-to-dynamically-load-external-javascriptwith-source.html) здесь и там и других, таких как post # 2013676), но он не делает то, что предполагалось делать.

Когда я проверяю с помощью DebugBar, я вижу, что мои включаемые файлы (например, a_foo.js) действительно загружены, но их содержимое пусто - в других включаемых файлах (1 уровень / напрямую) это содержимое показывается, поэтому я предполагаю, что есть проблема ...

«Ошибка», которую я получаю, - это всегда неопределенный объект, который является o / c b / c функцией, которую я вызываю, загружен неправильно, поэтому это не большая помощь. Я не получаю никаких ошибок на включениях.
Я проверил javascript-коды, чтобы они были в порядке.

У кого-нибудь есть окончательное решение для этого? Я могу воссоздать свои тесты и опубликовать некоторый код, если это поможет.

Спасибо, С уважением, Томас

Пример HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<HTML lang=en><HEAD><TITLE>Test</TITLE>

<script type="text/javascript" src="mmtest_files/jquery-1.4.2.min.js"></script>

<script type="text/javascript" src="mmtest_files/multiload.js"></script>
<script type="text/javascript" >

function init2() {
  // using the data from the loaded js files
  var a= mmf("a");
  document.getElementById('status').innerHTML = "Variable set:" + a;

}

// magic...
include(['mmt.js'],init2);

</script>

<BODY >

<H2>Test me!</H2>
<SPAN id=status>status old</SPAN>

</BODY></HTML>

JS 1 - мультизагрузка из ответа 1

JS2 - это тест, включающий:

функция ммФ (парам) { вернуть "Вызванный с" + param; }

1 Ответ

1 голос
/ 05 июля 2010

Вам необходимо использовать document.write в ie, чтобы загружать скрипты параллельно.

См .: Загрузка скриптов без блокировки

У меня есть такой скрипт: Асинхронная загрузка нескольких файлов Javascript в порядке

(может потребоваться некоторые улучшения в Chrome)


ОБНОВЛЕНИЕ

Есть функция обратного вызова, это необязательно.Его можно использовать для связывания зависимого скрипта с файлами.EG:

function myjQueryCode() {
   // ...
}

include(['jquery.js','jquery-ui.js'], myjQueryCode);

Чтобы ваш зависимый от jquery код запускался после загрузки файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...