Проблема LABjs с загрузкой скрипта

Я использую 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 ответ

Решение

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

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

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

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

Другие вопросы по тегам