Contoh ini merangkum metode pemuatan JS secara dinamis. Bagikan untuk referensi Anda. Dengan rincian sebagai berikut:
Metode 1: Direct Document.Write (Asynchronous)
Salin kode sebagai berikut: <bahasa skrip = "javascript">
document.write ("<skrip src = 'res/extwidget/echarts/xx.js'> <// script>");
</script>
Karena metode ini adalah pemuatan asinkron, Document.Write akan menulis ulang antarmuka, yang jelas tidak praktis
Metode 2: Ubah secara dinamis atribut SRC dari skrip yang ada (asynchronous)
Salin kode sebagai berikut: <skrip src = '' id = "xx"> </cript>
<bahasa skrip = "javascript">
xx.src = "test.js"
</script>
Metode ini tidak akan mengubah elemen antarmuka, tidak menulis ulang elemen antarmuka, tetapi juga akan dimuat secara tidak sinkron
Metode 3: Secara dinamis membuat elemen skrip (asynchronous)
Salin kode sebagai berikut: <script>
var body = document.getElementsbyTagname ('body'). [0];
var skrip = document.createElement ("Script");
script.type = "Teks/JavaScript";
script.src = "xx.js";
Body.AppendChild (Oscript);
</script>
Dibandingkan dengan metode kedua, keuntungan dari metode ini adalah tidak memerlukan menulis tag skrip pada antarmuka di awal. Kerugiannya adalah pemuatan asinkron
Metode 4: XmlHttPrequest/ActivexObject Loading (Asynchronous)
Salin kode sebagai berikut:/**
* Pemuatan Asynchronous dari JS Scripts
* @param ID ID dari tag <script> yang perlu disetel
* @param url relatif atau jalur absolut ke file js
*/
loadjs: function (id, url) {
var xmlhttp = null;
if (window.activexObject) {// yaitu
mencoba {
// dapat digunakan dalam versi IE6 dan yang lebih baru
xmlhttp = new ActivexObject ("msxml2.xmlhttp");
} catch (e) {
//Ie5.5 dan versi yang lebih baru dapat digunakan
xmlhttp = ActivexObject baru ("microsoft.xmlhttp");
}
} else if (window.xmlHttpRequest) {
// Firefox, Opera 8.0+, Safari, Chrome
xmlhttp = new xmlHttpRequest ();
}
// Gunakan pemuatan sinkron
xmlhttp.open ("get", url, false);
// Kirim permintaan sinkronisasi,
// Jika browsernya chrome atau opera, itu harus dipublikasikan sebelum dapat berjalan, jika tidak, kesalahan akan dilaporkan
xmlhttp.send (null);
xmlhttp.onreadystateChange = function () {
// 4 berarti data telah dikirim
if (xmlhttp.readystate == 4) {
// 0 adalah area lokal yang diakses, 200 hingga 300 berarti akses ke server berhasil.
// 304 berarti aksesnya adalah cache tanpa modifikasi
if ((xmlhttp.status> = 200 && xmlhttp.status <300) || xmlhttp.status == 0 || xmlhttp.status == 304) {
var mybody = document.geteLementsbyTagname ("body") [0];
var myscript = document.createelement ("script");
myscript.ibanguage = "javascript";
myscript.type = "Text/JavaScript";
myscript.id = id;
mencoba{
// IE8 dan berikut ini tidak mendukung metode ini, dan perlu diatur melalui atribut teks
myscript.appendChild (document.createTextNode (xmlhttp.responsetext));
} catch (ex) {
myscript.text = xmlhttp.Responsetext;
}
mybody.AppendChild (MyScript);
}
}
}
// menggunakan pemuatan asinkron
xmlhttp.open ("get", url, true);
xmlhttp.send (null);
}
Pengaturan ke false di terbuka berarti pemuatan sinkron. Pemuatan sinkron tidak memerlukan pengaturan acara onreadystatechange
Keempat metode ini dieksekusi secara tidak sinkron, yaitu, sambil memuat skrip ini, skrip pada halaman utama terus berjalan.
Metode 5: xmlhttprequest/ActivexObject Loading (sinkron)
Salin kode sebagai berikut:/**
* Pemuatan sinkron dari skrip JS
* @param ID ID dari tag <script> yang perlu disetel
* @param url relatif atau jalur absolut ke file js
* @return {boolean} kembali apakah itu berhasil, benar berarti keberhasilan, false berarti kegagalan
*/
loadjs: function (id, url) {
var xmlhttp = null;
if (window.activexObject) {// yaitu
mencoba {
// dapat digunakan dalam versi IE6 dan yang lebih baru
xmlhttp = new ActivexObject ("msxml2.xmlhttp");
} catch (e) {
//Ie5.5 dan versi yang lebih baru dapat digunakan
xmlhttp = ActivexObject baru ("microsoft.xmlhttp");
}
} else if (window.xmlHttpRequest) {
// Firefox, Opera 8.0+, Safari, Chrome
xmlhttp = new xmlHttpRequest ();
}
// Gunakan pemuatan sinkron
xmlhttp.open ("get", url, false);
// Kirim permintaan sinkronisasi. Jika browser adalah chrome atau opera, itu harus dipublikasikan sebelum dapat berjalan, jika tidak kesalahan akan dilaporkan
xmlhttp.send (null);
// 4 berarti data telah dikirim
if (xmlhttp.readystate == 4) {
// 0 adalah area lokal yang diakses. 200 hingga 300 berarti akses ke server berhasil, dan 304 berarti cache yang diakses tidak dibuat.
if ((xmlhttp.status> = 200 && xmlhttp.status <300) || xmlhttp.status == 0 || xmlhttp.status == 304) {
var mybody = document.geteLementsbyTagname ("body") [0];
var myscript = document.createelement ("script");
myscript.ibanguage = "javascript";
myscript.type = "Text/JavaScript";
myscript.id = id;
mencoba{
// IE8 dan berikut ini tidak mendukung metode ini, dan perlu diatur melalui atribut teks
myscript.appendChild (document.createTextNode (xmlhttp.responsetext));
} catch (ex) {
myscript.text = xmlhttp.Responsetext;
}
mybody.AppendChild (MyScript);
Kembali Benar;
}kalau tidak{
mengembalikan false;
}
}kalau tidak{
mengembalikan false;
}
}
Saya harap artikel ini akan membantu pemrograman JavaScript semua orang.