2014-10-08 3 views
0

После некоторого интересного чтения в async я не смог найти никакой информации о том, что должно произойти, если вы сначала имеете обычный тег скрипта, а затем один с асинхронным.Смешивание html5 <script async> с не-async <script> теги

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

test.html:

<!doctype html> 
<html> 
    <head><title>test</title></head> 
    <body> 
     <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> 
     <script src="test.js" async></script> 
    </body> 
</html> 

test.js:

alert(window.jQuery); 

В любом случае, кажется, что загружена Jquery. Может быть, я что-то пропустил в своих тестах. Это верно? Могу ли я помещать зависимости в теги non-async, а затем иждивенцы, использующие async? Это особенно полезно для этого?

Есть ли какие-либо проблемы? Что произойдет, если у вас есть какие-то асинты, а затем не-асинхронные? Будет ли асинхронная загрузка js первой?

ответ

1

Non-асинхронной скрипт-теги обработки блока страницы. Браузер может смотреть вперед и загружать test.js перед запуском jquery, но браузер не может обработать скрипт, поскольку он не знает, что делает jquery на странице (document.writeln, меняя объект окна ..).

Итак, да, это сработает.

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

2

Здесь вопросы, на которые я могу ответить. Я не уверен на 100% его давным-давно.

  1. Этот первый сценарий синхронизирован. Это означает, что он будет до тех пор, пока этот файл не будет полностью загружен, и после этого он перейдет к следующей строке.

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

  3. Асинхронные нагрузки будут загружаться одновременно с одним не-асинхронным. Если у вас есть два не-асинхронных конца. Эти две неасинхронные функции будут загружать синхронизацию. (DUH)

  4. Async будет загружаться, когда он находится на этой линии.

Под этим я имею в виду читателя

Смежные вопросы