Saya mengalami masalah saat membuat ini berfungsi. Saya pertama kali mencoba mengatur tag skrip saya sebagai string dan kemudian menggunakan jquery replaceWith () untuk menambahkannya ke dokumen setelah pemuatan halaman:
var a = '<script type="text/javascript">some script here</script>';
$('#someelement').replaceWith(a);
Tapi saya mendapat kesalahan literal string pada var itu. Saya kemudian mencoba menyandikan string seperti:
var a = '&left;script type="text/javascript">some script here<\/script>';
tetapi mengirimkannya ke replaceWith()
output hanya string itu ke browser.
Bisakah seseorang memberi tahu saya bagaimana Anda akan menambahkan <script>
tag secara dinamis ke browser setelah pemuatan halaman, idealnya melalui jQuery?
<script>
tag ke dokumen?eval()
fungsi. Tetapi penggunaan darieval()
hampir selalu menunjukkan bahwa ada cara yang lebih baik untuk melakukan apa yang Anda coba lakukan.document.write
dan Anda menyebutnya setelah pemuatan halaman, itu akan merusak halaman.<iframe>
elemen? Anda dapat menunda pengaturan<iframe>
URL sampai Anda siap.Jawaban:
Anda dapat meletakkan skrip ke dalam file terpisah, lalu gunakan
$.getScript
untuk memuat dan menjalankannya.Contoh:
sumber
$.getScript
hanya akan memuat file .js melalui AJAX dan menjalankannya. Skrip tidak perlu berada di DOM untuk dapat mengakses div di halaman Anda.$.getScript()
skrip harus berada di domain yang sama atau domain jarak jauh dan browser perlu mendukungCORS
.$.ajax
catatannya: "Permintaan skrip dan JSONP tidak tunduk pada batasan kebijakan asal yang sama." sumber . Dengan kata lain,$.getScript
dapat menarik file .js dari domain lain, bukan hanya milik Anda .Coba yang berikut ini:
http://api.jquery.com/append
sumber
append
untuk menambahkan skrip. Tambahkan menyebabkan bahkan skrip sebaris untuk segera dievaluasi (hanya yang saya butuhkan). Terima kasihBerikut cara yang benar untuk melakukannya dengan JQuery modern (2014):
atau jika Anda benar-benar ingin mengganti div, Anda dapat melakukan:
sumber
Cara yang lebih sederhana adalah:
Anda juga dapat menggunakan formulir ini untuk memuat css.
sumber
</script>
di sumber Anda karena dapat menyebabkan masalah penguraian: stackoverflow.com/questions/236073/…/
melakukan trik untuk saya:$('head').append('<script src="your.js"><\/script>');
Jawaban ini secara teknis serupa atau sama dengan apa yang dijawab oleh jcoffland. Saya baru saja menambahkan kueri untuk mendeteksi apakah skrip sudah ada atau tidak. Saya memerlukan ini karena saya bekerja di situs web intranet dengan beberapa modul, di mana beberapa di antaranya berbagi skrip atau membawa sendiri, tetapi skrip ini tidak perlu dimuat lagi. Saya menggunakan potongan ini sejak lebih dari satu tahun di lingkungan produksi, itu berfungsi seperti pesona. Mengomentari diri sendiri: Ya saya tahu, akan lebih tepat untuk menanyakan apakah ada fungsi ... :-)
sumber
Ada satu solusi yang terdengar lebih seperti peretasan dan saya setuju ini bukan cara paling elegan untuk melakukannya, tetapi berhasil 100%:
Katakanlah tanggapan AJAX Anda seperti ini
Perhatikan bahwa saya sengaja melewatkan tag penutup. Kemudian pada skrip yang memuat di atas, lakukan hal berikut:
Jangan tanya saya mengapa :-) Ini adalah salah satu hal yang saya alami sebagai hasil dari percobaan yang hampir acak dan gagal.
Saya tidak memiliki saran lengkap tentang cara kerjanya, tetapi yang cukup menarik, ini TIDAK akan berfungsi jika Anda menambahkan tag penutup dalam satu baris.
Di saat-saat seperti ini, saya merasa telah berhasil membagi dengan nol.
sumber
<\/script>
akan berlaku meskipunContoh:
Ini harus berhasil. Saya mencobanya; hasil yang sama. Tetapi ketika saya menggunakan ini:
Ini berhasil untuk saya.
Edit: Saya lupa file
#someelement
(btw saya mungkin ingin menggunakan#someElement
karena konvensi)Yang terpenting disini adalah + = agar html ditambahkan dan tidak diganti.
Tinggalkan komentar jika tidak berhasil. Saya ingin membantu Anda!
sumber
Berikut ini cara yang lebih jelas - tidak perlu jQuery - yang menambahkan skrip sebagai anak terakhir dari
<body>
:Tetapi jika Anda ingin menambahkan dan memuat skrip, gunakan metode Rocket Hazmat .
sumber
Jika Anda mencoba menjalankan beberapa JavaScript yang dibuat secara dinamis, akan lebih baik jika Anda menggunakan
eval
. Namun, JavaScript adalah bahasa yang dinamis sehingga Anda seharusnya tidak membutuhkannya.Jika skripnya statis, maka saran Rocket
getScript
adalah cara yang tepat.sumber