Динамически загружать файл JavaScript
В javascript нет импорта include-files / включения / требования, но vanilla-javascript есть два основных способа javascript добиться желаемого:
1 - Вы include-files можете загрузить его с помощью include-files вызова AJAX, а затем использовать include-files eval.
Это наиболее простой js способ, но он ограничен вашим include-files доменом из-за настроек безопасности includes Javascript, а использование importing eval открывает двери для import ошибок и взломов.
2 - Добавьте vanillajs элемент сценария с URL-адресом include сценария в HTML.
Определенно importing лучший способ пойти. Вы можете file загрузить сценарий даже с javascript-library внешнего сервера, и он будет vanilla-javascript чистым, поскольку вы используете imports синтаксический анализатор file браузера для оценки кода. Вы .js можете поместить элемент file script
в элемент head
веб-страницы js или внизу body
.
Оба этих решения imports обсуждаются и проиллюстрированы include-files здесь.
Вы должны знать о большой files проблеме. Это означает, что files вы загружаете код удаленно. Современные ecmascript веб-браузеры загрузят файл files и продолжат выполнение вашего javascript-library текущего скрипта, потому .js что они загружают все асинхронно ecmascript для повышения производительности.
Это importing означает, что если вы используете files эти уловки напрямую, вы не javascript сможете использовать свой vanillajs недавно загруженный код в js следующей строке после того, как include вы попросили его загрузить, потому import что он все еще будет загружаться.
Например: my_lovely_script.js include-files содержит MySuperObject
var js = document.createElement("script");
js.type = "text/javascript";
js.src = jsFilePath;
document.body.appendChild(js);
var s = new MySuperObject();
Error : MySuperObject is undefined
Затем include-files вы перезагружаете страницу, нажав includes F5. И это работает! Непонятно file ...
Так что же с этим делать?
Что .js ж, вы можете воспользоваться file советом автора по ссылке, которую vanillajs я вам дал. Таким образом, для javascript тех, кто спешит, он использует importing en event для запуска функции files обратного вызова при загрузке include скрипта. Таким образом, вы include-files можете поместить весь код imports с помощью удаленной библиотеки javascript-library в функцию обратного вызова. Напр import .:
function loadScript(url, callback)
{
// adding the script element to the head as suggested before
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
// then bind the event to the callback function
// there are several events for cross browser compatibility
script.onreadystatechange = callback;
script.onload = callback;
// fire the loading
head.appendChild(script);
}
Затем вы пишете код, который include-files хотите использовать ПОСЛЕ include-files загрузки скрипта в лямбда-функцию:
var myPrettyCode = function() {
// here, do what ever you want
};
Затем include вы запускаете все это:
loadScript("my_lovely_script.js", myPrettyCode);
Хорошо, я vanillajs поняла. Но писать все это javascript-library - боль.
Что ж, в этом случае .js вы, как всегда, можете использовать vanillajs фантастический бесплатный vanillajs фреймворк jQuery, который import позволяет делать то же самое vanilla-javascript в одной строке:
$.getScript("my_lovely_script.js", function() {
alert("Script loaded and executed.");
// here you can use anything you defined in the loaded script
});
javascript
file
import
include
Динамически загружать файл JavaScript
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.