Saya ingin secara dinamis memasukkan tag skrip di halaman web namun saya tidak memiliki kontrol src sehingga src = "source.js" mungkin terlihat seperti ini.
document.write('<script type="text/javascript">')
document.write('alert("hello world")')
document.write('</script>')
document.write('<p>goodbye world</p>')
Sekarang biasanya menempatkan
<script type="text/javascript" src="source.js"></script>
di kepala berfungsi dengan baik tetapi apakah ada cara lain saya dapat menambahkan source.js secara dinamis menggunakan sesuatu seperti innerHTML?
javascript
src
document.write
Cadell Christo
sumber
sumber
Jawaban:
sumber
Anda dapat menggunakan
document.createElement()
fungsi seperti ini:sumber
Ada
onload
fungsinya, yang bisa dipanggil ketika skrip berhasil dimuat:sumber
skrip kecil yang bagus yang saya tulis untuk memuat banyak skrip:
pemakaian:
sumber
Anda dapat mencoba cuplikan kode berikut.
sumber
Ini Bekerja Untukku.
Anda bisa memeriksanya.
sumber
Ketika skrip dimuat secara tidak sinkron, skrip tidak dapat memanggil document.write. Panggilan hanya akan diabaikan dan peringatan akan ditulis ke konsol.
Anda dapat menggunakan kode berikut untuk memuat skrip secara dinamis:
Pendekatan ini hanya berfungsi dengan baik ketika sumber Anda milik file yang terpisah.
Tetapi jika Anda memiliki kode sumber sebagai fungsi sebaris yang ingin Anda muat secara dinamis dan ingin menambahkan atribut lain ke tag skrip, misalnya kelas, jenis, dll., Maka potongan berikut akan membantu Anda:
sumber
Nah, ada beberapa cara Anda dapat memasukkan javascript dinamis, saya menggunakan ini untuk banyak proyek.
Anda dapat memanggil membuat fungsi universal yang dapat membantu Anda memuat sebanyak mungkin file javascript. Ada tutorial lengkap tentang ini di sini.
Memasukkan Dynamic Javascript dengan cara yang benar
sumber
satu-satunya cara untuk melakukan ini adalah mengganti
document.write
dengan fungsi Anda sendiri yang akan menambahkan elemen ke bagian bawah halaman Anda. Ini sangat mudah dengan jQuery:Jika Anda memiliki html yang datang ke document.write dalam potongan-potongan seperti contoh pertanyaan Anda perlu buffer
htmlToWrite
segmen. Mungkin kira-kira seperti ini:sumber
Saya mencobanya dengan menambahkan setiap skrip secara rekursif
Catatan Jika skrip Anda tergantung satu demi satu, maka posisi harus disinkronkan.
Ketergantungan Besar harus dalam array terakhir sehingga skrip awal dapat menggunakannya
sumber
Memuat skrip yang bergantung satu sama lain dengan urutan yang benar.
Berdasarkan respons Satyam Pathak , tetapi tetap memperbaiki muatannya. Itu dipicu sebelum skrip benar-benar dimuat.
sumber
Berikut ini cuplikan yang diperkecil, kode yang sama seperti yang digunakan Google Analytics dan Facebook Pixel:
Ganti
https://example.com/foo.js
dengan jalur skrip Anda.sumber
Satu kalimat (tidak ada perbedaan mendasar pada jawaban di atas):
sumber