Проблема 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>
тег по двум причинам:
- Браузер выполняет скрипт сразу же после его доступности (т. Е. Когда сервер возвращает скрипт клиенту), блокируя все остальные действия до тех пор, пока скрипт не будет выполнен;
- DOM еще не закончен в тот момент, когда происходит что-то вроде (1), поэтому вызов
document.write
добавляет контент в текущий DOM.
Когда вы загружаете скрипт асинхронно, он не будет выполняться до тех пор, пока не завершится DOM. В этот момент звонок document.write
неявно называет document.open
, который на уже построенной странице снесет все.