Создание документа Javascript.запись с помощью блока тегов скрипта

#javascript #blocking #document.write

#javascript #блокировка #document.write

Вопрос:

Кто-нибудь знает, как я могу создать document.write с блокировкой выполнения тега script?

 <script type="text/javascript">
    var test = "bad";
    document.write('<script type="text/javascript" src="js.php"></script>');
    console.log(test);
</script>
  

Где js.php является

 <?PHP sleep(1); echo "var test='good';"; ?>
  

консоль.журнал должен выводить «good», но он выводит «bad». Конечно, через секунду значение параметра меняется на «good», но мне определенно нужно, чтобы оно блокировалось. Спасибо!!

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

Ответ №1:

Кажется, я припоминаю, что существует обходной путь для написания <script> тегов:

 document.write('<scr' 'ipt type="text/javascript" src="js.php"></scr' 'ipt>');
  

Комментарии:

1. К сожалению, это все еще не работает. Я использую chrome и Firefox. В любом случае, спасибо!

Ответ №2:

Выполните вызов Ajax, чтобы загрузить больше данных. Маловероятно, что это можно настроить. Вы можете легко сделать это с помощью jQuery и JSON.

Комментарии:

1. Вы можете определить обратный вызов для запуска вашего скрипта только после завершения вызова ajax. Вы также можете добавить некоторую анимацию «Загрузки» для вашего веб-сайта во время выполнения ajax-вызова и удалить ее при обратном вызове.

2. @nolanpro XHR также может быть блокирующим, используя (a) синхронный флаг объекта XMLHttpRequest. Это третий параметр open метода. Кстати, это одна из причин, по которой ‘AJAX’ — неподходящий термин для XHR.

3. Спасибо, я думаю, это сработает! К сожалению, я не могу использовать jQuery из-за специфической реализации, но XHR, как сказал Kooilnc, может быть галочкой.