Ich möchte ein Skript-Tag dynamisch in eine Webseite einfügen, habe jedoch keine Kontrolle über dessen src, sodass src = "source.js" möglicherweise so aussieht.
document.write('<script type="text/javascript">')
document.write('alert("hello world")')
document.write('</script>')
document.write('<p>goodbye world</p>')
Jetzt normalerweise setzen
<script type="text/javascript" src="source.js"></script>
im Kopf funktioniert gut, aber gibt es eine andere Möglichkeit, source.js dynamisch mit so etwas wie innerHTML hinzuzufügen?
javascript
src
document.write
Cadell Christo
quelle
quelle
Antworten:
quelle
Sie können die
document.createElement()
Funktion folgendermaßen verwenden:quelle
Es gibt die
onload
Funktion, die aufgerufen werden kann, wenn das Skript erfolgreich geladen wurde:quelle
Ein nettes kleines Skript, das ich geschrieben habe, um mehrere Skripte zu laden:
Verwendung:
quelle
Sie können versuchen, das folgende Code-Snippet zu verwenden.
quelle
Das ist Arbeit für mich.
Du kannst es überprüfen.
quelle
Wenn Skripte asynchron geladen werden, können sie document.write nicht aufrufen. Die Anrufe werden einfach ignoriert und eine Warnung wird an die Konsole geschrieben.
Sie können den folgenden Code verwenden, um das Skript dynamisch zu laden:
Dieser Ansatz funktioniert nur dann gut, wenn Ihre Quelle zu einer separaten Datei gehört.
Wenn Sie jedoch Quellcode als Inline-Funktionen haben, die Sie dynamisch laden und dem Skript-Tag andere Attribute hinzufügen möchten, z. B. Klasse, Typ usw., hilft Ihnen das folgende Snippet:
quelle
Nun, es gibt mehrere Möglichkeiten, wie Sie dynamisches Javascript einbinden können. Ich verwende dieses für viele Projekte.
Sie können create eine universelle Funktion aufrufen, mit der Sie so viele Javascript-Dateien wie nötig laden können. Hier finden Sie ein vollständiges Tutorial dazu.
Dynamisches Javascript richtig einfügen
quelle
Die einzige Möglichkeit, dies zu tun, besteht darin, sie
document.write
durch eine eigene Funktion zu ersetzen, mit der Elemente am Ende Ihrer Seite angehängt werden. Mit jQuery ist das ziemlich einfach:Wenn HTML in document.write in Blöcken wie im Fragenbeispiel angezeigt wird, müssen Sie die
htmlToWrite
Segmente puffern . Vielleicht so etwas:quelle
Ich habe es versucht, indem ich jedes Skript rekursiv angehängt habe
Hinweis Wenn Ihre Skripte nacheinander abhängig sind, muss die Position synchron sein.
Die Hauptabhängigkeit sollte im Array als letztes vorhanden sein, damit die ersten Skripte sie verwenden können
quelle
Lädt voneinander abhängige Skripte mit der richtigen Reihenfolge.
Basierend auf der Antwort von Satyam Pathak , aber die Onload wurde behoben. Es wurde ausgelöst, bevor das Skript tatsächlich geladen wurde.
quelle
Hier ist ein minimiertes Snippet, der den gleichen Code wie Google Analytics und Facebook Pixel verwendet:
Ersetzen Sie
https://example.com/foo.js
durch Ihren Skriptpfad.quelle
Ein Einzeiler (kein wesentlicher Unterschied zu den obigen Antworten):
quelle