Chcę dynamicznie dołączyć tag skryptu do strony internetowej, ale nie mam kontroli nad jego src, więc src = "source.js" może wyglądać tak.
document.write('<script type="text/javascript">')
document.write('alert("hello world")')
document.write('</script>')
document.write('<p>goodbye world</p>')
Teraz zwykle kładąc
<script type="text/javascript" src="source.js"></script>
w głowie działa dobrze, ale czy jest jakiś inny sposób na dynamiczne dodawanie source.js przy użyciu czegoś takiego jak innerHTML?
javascript
src
document.write
Cadell Christo
źródło
źródło
Odpowiedzi:
źródło
Możesz użyć tej
document.createElement()
funkcji w następujący sposób:źródło
Jest
onload
funkcja, którą można wywołać po pomyślnym załadowaniu skryptu:źródło
ładny mały skrypt, który napisałem, aby załadować wiele skryptów:
stosowanie:
źródło
Możesz spróbować wykonać następujący fragment kodu.
źródło
To jest praca dla mnie.
Możesz to sprawdzić.
źródło
Gdy skrypty są ładowane asynchronicznie, nie mogą wywoływać document.write. Połączenia zostaną po prostu zignorowane, a na konsoli zostanie wyświetlone ostrzeżenie.
Możesz użyć następującego kodu, aby dynamicznie załadować skrypt:
To podejście działa dobrze tylko wtedy, gdy źródło należy do oddzielnego pliku.
Ale jeśli masz kod źródłowy jako funkcje wbudowane, które chcesz ładować dynamicznie i chcesz dodać inne atrybuty do tagu skryptu, np. Klasa, typ itp., Pomoże Ci następujący fragment kodu:
źródło
Cóż, istnieje wiele sposobów na dołączenie dynamicznego javascript, używam tego w wielu projektach.
Możesz wywołać funkcję create uniwersalną, która pomoże ci załadować dowolną liczbę plików javascript. Tutaj znajduje się pełny tutorial na ten temat.
Wstawianie dynamicznego JavaScript we właściwy sposób
źródło
Jedynym sposobem na to jest zastąpienie
document.write
własnej funkcji, która będzie dodawać elementy na dole strony. Z jQuery jest całkiem proste:Jeśli masz kod HTML trafiający do document.write fragmentami, jak w przykładzie pytania, musisz buforować
htmlToWrite
segmenty. Może coś takiego:źródło
Wypróbowałem to, dołączając rekursywnie każdy skrypt
Uwaga Jeśli twoje skrypty są zależne jeden po drugim, pozycja będzie musiała być zsynchronizowana.
Zależność główna powinna znajdować się na końcu tablicy, aby początkowe skrypty mogły z niej korzystać
źródło
Wczytuje skrypty zależne od siebie we właściwej kolejności.
Oparty na odpowiedzi Satyama Pathaka , ale naprawiono obciążenie. Został uruchomiony przed załadowaniem skryptu.
źródło
Oto zminimalizowany fragment, ten sam kod, którego używa Google Analytics i Facebook Pixel:
Zastąp
https://example.com/foo.js
ścieżką do skryptu.źródło
Jedna linijka (jednak bez istotnej różnicy w stosunku do odpowiedzi powyżej):
źródło