В этой статье описывается решение недопустимого создания тега сценариев динамически в IE8. Поделитесь этим для вашей ссылки. Конкретный анализ заключается в следующем:
Сегодня, когда я работал над проектом, я нашел странную проблему. Динамически созданный тег скрипта не может запустить событие Onload под IE8.
Код заключается в следующем:
Скопируйте код следующим образом: var loadjs = function (src, fun) {
var script = null;
script = document.createElement ("script");
script.type = "text/javascript";
script.src = src;
if (typeof fun === "function") {
script.onload = веселье;
}
document.getElementsbytagname ("head") [0] .appendchild (script);
};
LoadJS ("JS/JQUERY-1.11.0.min.js", function () {
console.log ("от jQuery");
});
loadjs ("test.js", function () {
console.log ("from test.js");
});
test.js:
console.log (typeof jquery);
Результаты работы:
Скопируйте код следующим образом: Undefined // При запуске test.js, jQuery еще не загружен
>> TypeOf jQuery // Запустите из консоли, но обнаружил объект jQuery, доказывая проблему заказа на загрузку
"Функция"
Кроме того, Script.onload не выполняется в приведенном выше коде. Код был загружен, так почему он все еще не выполняется нагрузкой? После проверки онлайн я обнаружил, что многие фронт-разработчики столкнулись с этой сложной проблемой, поэтому я нашел некоторые альтернативы следующим образом:
Скопируйте код следующим образом: var loadjs = function (src, fun) {
var script = null;
script = document.createElement ("script");
script.type = "text/javascript";
script.src = src;
if (typeof fun === "function") {
script.onreadystatechange = function () {
var r = script.readystate;
console.log (src + ":" + r);
if (r === 'Загружено' || r === 'overse') {
script.onreadystatechange = null;
веселье();
}
};
}
document.getElementsbytagname ("head") [0] .appendchild (script);
};
Результаты исполнения:
Скопируйте код следующим образом: неопределенно
JS/jQuery-1.11.0.min.js: загрузка
test.js: завершен
От test.js
JS/jQuery-1.11.0.min.js: загружен
От jQuery
Шаг выполнения состоит в том, что функция, аналогичная Onload, была найдена, но есть проблема. Это не загружен по порядку. Когда файл jQuery загружается, Test.js был завершен, а первая строка выполняется первой. Поскольку test.js выполняется до jQuery, производится неопределенная. Таким образом, мы можем переписать это так и позволить линейно загружаться:
Кода кода выглядит следующим образом: LOADJS ("JS/JQUERY-1.11.0.MIN.JS", function () {
console.log ("от jQuery");
loadjs ("test.js", function () {
console.log ("from test.js");
});
});
Результаты исполнения:
Скопировать код следующим образом: JS/JQUERY-1.11.0.MIN.JS: Загрузка
JS/jQuery-1.11.0.min.js: загружен
От jQuery
функция
test.js: завершен
От test.js
На этот раз заказ на выполнение точно в том порядке, который мы забронировали, но приведенный выше код выглядит неловко и должен быть вложенным слоем по слою, поэтому я снова обнаружил этот метод написания:
Скопируйте код следующим образом: var loadjs = function (src, fun) {
var script = null;
script = document.createElement ("script");
script.type = "text/javascript";
script.src = src;
if (typeof fun === "function") {
script.onreadystatechange = function () {
var r = script.readystate;
console.log (src + ":" + r);
if (r === 'Загружено' || r === 'overse') {
script.onreadystatechange = null;
веселье();
}
};
}
document.write (script.outerhtml);
//document.getelementsbytagname("ead") groble.appendchild(script);
};
LoadJS ("JS/JQUERY-1.11.0.min.js", function () {
console.log ("от jQuery");
});
loadjs ("test.js", function () {
console.log ("from test.js");
});
Порядок результатов исполнения также отличается:
Скопировать код следующим образом: функция
JS/jQuery-1.11.0.min.js: загружен
От jQuery
test.js: загружен
От test.js
Если вы измените заказ на загрузку
Кода -код следующим образом: loadjs ("test.js", function () {
console.log ("from test.js");
});
LoadJS ("JS/JQUERY-1.11.0.min.js", function () {
console.log ("от jQuery");
});
Результаты выполнения различны, аналогично загружены последовательно:
Скопируйте код следующим образом: неопределенно
test.js: загружен
От test.js
JS/jQuery-1.11.0.min.js: загружен
От jQuery
Я надеюсь, что эта статья будет полезна для каждого программирования JavaScript.