File JS apa pun yang diperkenalkan di AppendChild (ScriptNode) dieksekusi secara tidak sinkron (ScriptNode perlu dimasukkan ke dalam dokumen, hanya membuat node dan mengatur SRC tidak akan memuat file JS, yang berbeda dari IMG dan memuat)
Kode dalam tag <script> dalam file html atau kode dalam file JS yang dirujuk oleh SRC dimuat dan dieksekusi secara sinkron
Kode dalam tag <script> dalam file html dieksekusi secara asinkron menggunakan metode document.write ().
File JS yang diperkenalkan menggunakan metode Document.write () dieksekusi secara serempak dalam kode file JS yang dirujuk oleh atribut SRC dalam file HTML.
1.
<script> // Pemuatan Sinkron dari Kode Dieksekusi </ptript>
2.
<Script src = "xx.js"> </script> // Muat dan menjalankan kode secara sinkron di xx.js
3.
<script> document.write ('<skrip src = "xx.js"> <// script>'); // memuat asinkron untuk menjalankan kode di xx.js </script> 4.
<Script src = "xx.js"> </script>
Ada kode berikut di xx.js:
document.write ('<skrip src = "11.js"> <// script>'); document.write ('<skrip src = "22.js"> <// script>');Kemudian xx.js, 11.js, dan 22.js dimuat dan dieksekusi secara bersamaan.
Jika xx.js dimuat secara asinkron dalam penyisipan, 11.js dan 22.js masih dimuat secara sinkron (sinkron dalam asinkron, yaitu pemuatan 2 file ini secara berurutan)
Tes: Dalam Peringatan dalam 11, Document.Write () di 22, Anda dapat melihat bahwa pernyataan Write di 22 diblokir
5.
Dengan cara berikut, XX.JS akan memuat dan mengeksekusi secara tidak sinkron setelah AppendChild dieksekusi.
var skrip = document.createElement ("script"); script.setAttribute ("src", "xx.js"); documenrt.getElementsbyTagname ("head") [0] .AppendChild (Script); Fungsi yang memuat file JS:
var loadjs = function (url, callback) {var head = document.geteLementsbyTagname ('head') [0], script = document.createElement ('Script'); script.src = url; script.type = "Teks/JavaScript"; head.AppendChild (skrip); script.onload = script.onReadyStateChange = function () {// Tag skrip, ada peristiwa onreadystatechange di bawah IE, W3C Standard memiliki acara onload // The Readystates ini untuk IE8 dan di bawahnya, W3C tidak akan ada. (! this.readystate) adalah standar W3C if ((! this.readystate) || this.readystate == "complete" || this.readystate == "dimuat") {callback (); } else {alert ("tidak dapat memuat file js")}}}Untuk tes titik 4 (di mana peringatan penyisipan mudah dilihat pemblokiran selama pemuatan)
tryjs.html
<! Doctype html> <html> <head> <meta http-equiv = "content-type" content = "text /html; charset = utf-8" /> <script src = "tryjs.js" onload = "if (! Document.all) {console.log ('oute js callback, no oute, no oute, no oute callback, ne oute, ne oDOAD, NS IF (! onreadystatechange = "console.log ('callback js luar', this.readystate, 'ie');"> </script> <body> </body> </html> tryjs.js
console.log ('write begin'); document.write ('<script src = "try.1.js" onreadystatechange = "console.log (/' file 1 callback /'sthis.readystate ,/ 'yaitu/');" onload = "if (! document.all) {console.log (/' /');}"><//script>'');document.write('<script src = "try.2.js" onreadystatechange = "console.log (/'file 2 callback /',this.readystate ,/' ie/');" onload = "if (! document.locor) {console. /');}"><//script>');console.log('write finish '); coba.1.js
console.log ('loadjs 1 begin'); console.log ('loadjs 1 finish'); coba.2.js
console.log ('loadjs 2 begin'); console.log ('loadjs 2 finish');Hasil Tes (Callback Complete dari File 2 dan File 1 tidak pasti dalam pesanan IE7/8/9)
Yaitu 7:
Log: Outer JS Callback Loading IE
Log: Callback JS Luar Luar IE
Log: Tulis mulai
Log: Tulis selesai
Log: Callback JS Luar Lengkap IE
Log: File 1 Callback Loading IE
Log: File 2 Callback Loading IE
Log: Loadjs 1 Mulai
Log: Loadjs 1 selesai
Log: Loadjs 2 Mulai
Log: Loadjs 2 selesai
Log: File 2 Callback Lengkap IE
Log: File 1 Callback Lengkap IE
IE8:
Log: Outer JS Callback Loading IE
Log: Callback JS Luar Luar IE
Log: Tulis mulai
Log: Tulis selesai
Log: Callback JS Luar Lengkap IE
Log: File 1 Callback Loading IE
Log: File 2 Callback Loading IE
Log: Loadjs 1 Mulai
Log: Loadjs 1 selesai
Log: Loadjs 2 Mulai
Log: Loadjs 2 selesai
Log: File 2 Callback Lengkap IE
Log: File 1 Callback Lengkap IE
IE9:
Log: Tulis mulai
Log: Tulis selesai
Log: Callback JS Luar Lengkap IE
Log: File 1 Callback Loading IE
Log: File 2 Callback Loading IE
Log: Loadjs 1 Mulai
Log: Loadjs 1 selesai
Log: Loadjs 2 Mulai
Log: Loadjs 2 selesai
Log: File 1 Callback Lengkap IE
Log: File 2 Callback Lengkap IE
Firefox:
Tulis Begin
Tulis selesai
Callback JS luar, bukan yaitu
Loadjs 1 Mulai
Loadjs 1 selesai
File 1 panggilan balik, bukan yaitu
loadjs 2 dimulai
LOADJS 2 selesai
File 2 panggilan balik, bukan yaitu
Chrome:
Tulis Begin
Tulis selesai
Callback JS luar, bukan yaitu
Loadjs 1 Mulai
Loadjs 1 selesai
File 1 panggilan balik, bukan yaitu
loadjs 2 dimulai
LOADJS 2 selesai
File 2 panggilan balik, bukan yaitu
Di atas adalah diskusi singkat tentang metode referensi file JS dan eksekusi sinkron dan eksekusi asinkron yang dibawa editor kepada Anda. Saya harap ini akan membantu semua orang dan lebih mendukung wulin.com ~