Проблема LABjs с загрузкой скрипта - PullRequest
2 голосов
/ 06 марта 2011

Я использую labjs для загрузки своих скриптов. У меня есть скрипт от feedburner, который показывает последние сообщения из моего блога в формате HTML из моего RSS-канала. Код от feedburner есть и работает просто отлично, показывая все посты в html:

<script src="http://feeds.feedburner.com/Goonerhood?format=sigpro" type="text/javascript" ></script>

Я пытаюсь загрузить тот же скрипт, используя labjs, но он ничего не показывает. Вот мой код:

<script>
   $LAB
   .script("http://feeds.feedburner.com/Goonerhood?format=sigpro");
</script>

Любое предложение, где я иду не так?

1 Ответ

3 голосов
/ 06 марта 2011

Проблема в том, что этот сценарий имеет значение document.write, которое нельзя использовать (ну, не следует использовать), когда вы загружаете сценарий любым динамическим асинхронным способом.

Функция document.write может использоваться, когда скрипт импортируется с тегом <script> по двум причинам:

  1. Браузер немедленно запускает скрипт, когда он становится доступным для него (т. Е. Когда сервер возвращает скрипт клиенту), блокируя все остальные действия до тех пор, пока скрипт не будет выполнен;
  2. DOM еще не завершен в тот момент, когда происходит что-то вроде (1), поэтому вызов document.write добавляет контент к текущему DOM.

Когда вы загружаете скрипт асинхронно, он не будет выполняться до тех пор, пока DOM не будет завершен. В этот момент вызов document.write неявно вызывает document.open, что на уже созданной странице сметет все.

...