Я хочу динамически включать тег сценария в веб-страницу, однако я не могу контролировать его src, поэтому src = "source.js" может выглядеть следующим образом.
document.write('<script type="text/javascript">')
document.write('alert("hello world")')
document.write('</script>')
document.write('<p>goodbye world</p>')
Сейчас выкладываю
<script type="text/javascript" src="source.js"></script>
в голове работает нормально, но есть ли другой способ динамического добавления source.js, используя что-то вроде innerHTML?
javascript
src
document.write
Каделл Кристо
источник
источник
Ответы:
источник
Вы можете использовать
document.createElement()
функцию следующим образом:источник
Есть
onload
функция, которая может быть вызвана после успешной загрузки скрипта:источник
хороший маленький скрипт, который я написал для загрузки нескольких скриптов:
использование:
источник
Вы можете попробовать следующий фрагмент кода.
источник
Это работа для меня.
Вы можете проверить это.
источник
Когда скрипты загружаются асинхронно, они не могут вызывать document.write. Звонки будут просто проигнорированы, и на консоль будет записано предупреждение.
Вы можете использовать следующий код для динамической загрузки скрипта:
Этот подход хорошо работает только тогда, когда ваш источник принадлежит отдельному файлу.
Но если у вас есть исходный код в виде встроенных функций, которые вы хотите загружать динамически и хотите добавить другие атрибуты в тег сценария, например, класс, тип и т. Д., То вам поможет следующий фрагмент:
источник
Ну, есть несколько способов включить динамический javascript, я использую этот для многих проектов.
Вы можете вызвать create универсальную функцию, которая может помочь вам загрузить столько файлов javascript, сколько необходимо. Здесь есть полное руководство по этому вопросу.
Вставка динамического Javascript правильным способом
источник
единственный способ сделать это - заменить
document.write
свою собственную функцию, которая будет добавлять элементы внизу вашей страницы. Это довольно просто с jQuery:Если у вас есть html, поступающий в document.write в виде фрагментов, как в примере с вопросом, вам нужно буферизовать
htmlToWrite
сегменты. Может быть, что-то вроде этого:источник
Я попробовал это, рекурсивно добавляя каждый скрипт
Примечание. Если ваши сценарии зависят друг от друга, положение должно быть синхронизировано.
Основная зависимость должна быть последней в массиве, чтобы ее могли использовать начальные сценарии
источник
Загружает скрипты, которые зависят друг от друга в правильном порядке.
Основано на ответе Сатьям Патхака , но исправлено. Он был запущен до того, как скрипт действительно загрузился.
источник
Вот сокращенный фрагмент, такой же код, как Google Analytics и Facebook Pixel:
Замените
https://example.com/foo.js
ваш путь к сценарию.источник
Однострочник (без существенной разницы с ответами выше):
источник