Этот пример суммирует методы динамической загрузки JS. Поделитесь этим для вашей ссылки. Детали следующие:
Метод 1: Direct Document.Write (асинхронно)
Скопируйте код следующим образом: <script language = "javascript">
document.write ("<script src = 'res/extwidget/echarts/xx.js'> <// script>");
</script>
Поскольку этот метод является асинхронной загрузкой, Document.Write переписывает интерфейс, который, очевидно, не практичен
Метод 2: Динамически изменить атрибут SRC существующего сценария (асинхронный)
Скопируйте код следующим образом: <script src = '' id = "xx"> </script>
<script language = "javascript">
xx.src = "test.js"
</script>
Этот метод не изменит элементы интерфейса, не переписывает элементы интерфейса, но также будут загружены асинхронно
Метод 3: Динамически создавать элементы сценария (асинхронно)
Скопируйте код следующим образом: <Script>
var body = document.getelementsbytagname ('body'). [0];
var script = document.createElement ("script");
script.type = "text/javascript";
script.src = "xx.js";
body.appendchild (oscript);
</script>
По сравнению со вторым методом преимущество этого метода заключается в том, что он не требует записи тега сценария на интерфейсе в начале. Недостатком является асинхронная нагрузка
Метод 4: xmlhttprequest/ActivexObject Загрузка (асинхронная)
Скопируйте код следующим образом:/**
* Асинхронная загрузка сценариев JS
* @param id Идентификатор тега <cript>, который необходимо установить
* @param url относительный или абсолютный путь к файлу JS
*/
LoadJS: function (id, url) {
var xmlhttp = null;
if (window.activexobject) {// т.е.
пытаться {
// можно использовать в IE6 и в более поздних версиях
xmlhttp = new ActivexObject ("msxml2.xmlhttp");
} catch (e) {
//Ie5.5 и более поздние версии могут быть использованы
xmlhttp = new ActivexObject ("microsoft.xmlhttp");
}
} else if (window.xmlhttprequest) {
// Firefox, Opera 8.0+, Safari, Chrome
xmlhttp = new xmlhttprequest ();
}
// Использовать синхронную нагрузку
xmlhttp.open ("Get", url, false);
// Отправить запрос на синхронизацию,
// Если браузер является хром или опера, он должен быть опубликован до того, как он может запустить, в противном случае сообщается об ошибке
xmlhttp.send (null);
xmlhttp.onreadystatechange = function () {
// 4 означает, что данные были отправлены
if (xmlhttp.readystate == 4) {
// 0 - доступная локальная область, от 200 до 300 означает, что доступ к серверу успешен.
// 304 означает, что доступ к кэше без модификации
if ((xmlhttp.status> = 200 && xmlhttp.status <300) || xmlhttp.status == 0 || xmlhttp.status == 304) {
var mybode = document.getElementsbytagname ("body") [0];
var myscript = document.createElement ("script");
myscript.language = "javascript";
myscript.type = "text/javascript";
myscript.id = id;
пытаться{
// IE8 и следующее не поддерживают этот метод, и должны быть установлены через текстовый атрибут
myscript.appendchild (document.createtextnode (xmlhttp.responsetext));
} catch (ex) {
myscript.text = xmlhttp.responsetext;
}
mybody.appendchild (myscript);
}
}
}
// Используется асинхронная нагрузка
xmlhttp.open ("Get", url, true);
xmlhttp.send (null);
}
Настройка на ложь в открытом виде означает синхронную загрузку. Синхронная загрузка не требует настройки события onreadystateChange
Эти четыре метода выполняются асинхронно, то есть при загрузке этих сценариев сценарий на главной странице продолжает работать.
Метод 5: xmlhttprequest/activexobject Нагрузка (синхронно)
Скопируйте код следующим образом:/**
* Синхронная загрузка сценариев JS
* @param id Идентификатор тега <cript>, который необходимо установить
* @param url относительный или абсолютный путь к файлу JS
* @return {boolean} возвращает, загружается ли он успешно, true означает успех, false означает неудачу
*/
LoadJS: function (id, url) {
var xmlhttp = null;
if (window.activexobject) {// т.е.
пытаться {
// можно использовать в IE6 и в более поздних версиях
xmlhttp = new ActivexObject ("msxml2.xmlhttp");
} catch (e) {
//Ie5.5 и более поздние версии могут быть использованы
xmlhttp = new ActivexObject ("microsoft.xmlhttp");
}
} else if (window.xmlhttprequest) {
// Firefox, Opera 8.0+, Safari, Chrome
xmlhttp = new xmlhttprequest ();
}
// Использовать синхронную нагрузку
xmlhttp.open ("Get", url, false);
// Отправить запрос на синхронизацию. Если браузер - хром или опера, он должен быть опубликован до того, как он может запустить, в противном случае будет сообщена ошибка
xmlhttp.send (null);
// 4 означает, что данные были отправлены
if (xmlhttp.readystate == 4) {
// 0 - доступная локальная область. 200-300 означает, что доступ к серверу успешен, а 304 означает, что доступный кэш не производится.
if ((xmlhttp.status> = 200 && xmlhttp.status <300) || xmlhttp.status == 0 || xmlhttp.status == 304) {
var mybode = document.getElementsbytagname ("body") [0];
var myscript = document.createElement ("script");
myscript.language = "javascript";
myscript.type = "text/javascript";
myscript.id = id;
пытаться{
// IE8 и следующее не поддерживают этот метод, и должны быть установлены через текстовый атрибут
myscript.appendchild (document.createtextnode (xmlhttp.responsetext));
} catch (ex) {
myscript.text = xmlhttp.responsetext;
}
mybody.appendchild (myscript);
вернуть истину;
}еще{
вернуть ложь;
}
}еще{
вернуть ложь;
}
}
Я надеюсь, что эта статья будет полезна для каждого программирования JavaScript.