подгрузка скриптов
могу предложить несколько вариантов
был найден в просторах интернета:
var elements = ["http://site.ru/js/onload.min.js?ver=2014.15.0", "http://site.ru/js/prism.js"], downloadJSAtOnload = function (n) { if ("[object Array]" !== Object.prototype.toString.call(n))return 0; var t, e; for (t = 0; t < n.length; t++)e = document.createElement("script"), e.src = n[t], document.body.appendChild(e); return !0 }; window.addEventListener ? window.addEventListener("load", function () { downloadJSAtOnload(elements) }, !1) : window.attachEvent ? window.attachEvent("onload", function () { downloadJSAtOnload(elements) }) : window.on load = function () { downloadJSAtOnload(elements) }; |
и тут же такая реализация:
[ '//other-domain.com/1.js', '2.js' ].forEach(function(src) { var script = document.createElement('script'); script.src = src; script.async = false; // document.head.appendChild(script); }); |
script.async = false; даст нашим скриптам сочетание с поведением, которое не может быть достигнуто чистым HTML. Явно заданные неасинхронными, скрипты добавляются в очередь на выполнение
Асинхронная загрузка скрипта HTML5:
<script async src="http://www.site.ru/script.js" type="text/javascript"></script> <script defer src="http://www.site.ru/script.js" type="text/javascript"></script> |
В обоих случаях мы получаем асинхронную загрузку скриптов. Разница заключается только в моменте, когда скрипт начинает выполнятся. Скрипт с атрибутом async выполнится при первой же возможности после его полной загрузки, но до загрузки объекта window. В случае использования атрибутаdefer — скрипт не нарушит порядок своего выполнения по отношению к остальным скриптам и его выполнение произойдет после полной загрузки и парсинга страницы, но до события DOMContentLoaded объекта document.
К сожалению, этот механизм на сегодняшний день не работает во всех браузерах (особенно это касается IE). Также не будет работать, если в файлеscript.js есть строки document.write.
Асинхронная загрузка javascript скриптом от Google:
<script src="http://extsrcjs.googlecode.com/svn/trunk/extsrc.js"></script> <script extsrc="...."></script> |
этот способ тоже не подойдет к файлам с document.write
Так же есть готовое решение http://requirejs.org/ позволяет зависимости выставлять.