Banyak orang sudah mahir menggunakan Javascript, tetapi ketika mereka melihat penundaan, mereka mungkin tidak tahu kegunaannya. Banyak orang juga mengalami masalah seperti itu, dan mereka perlu langsung mengeksekusi js lain dan memanipulasi objek DOM dan selalu melaporkan Objek kesalahan tidak ditemukan. Seperti yang diketahui semua orang, alasannya adalah halaman belum dimuat, dan objek operasi js masih diunduh. Namun banyak orang yang belum mengetahui bahwa menambahkan tag defer dapat dengan mudah mengatasi masalah ini.
<skrip src="../CGI-bin/delscript.js" tunda></script>
Fungsi defer adalah mengeksekusi script setelah dokumen diload, sehingga terhindar dari masalah tidak ditemukannya objek---sedikit masalah
Copy kode kodenya sebagai berikut:
<button id="myButton" onclick="alert('ok')">uji</button>
<skrip>
myButton.klik();
</skrip>
<skrip>
myButton.klik();
</skrip>
<button id="myButton" onclick="alert('ok')">uji</button>
<penundaan skrip>
fungsi dokumen.tubuh.onload() {
peringatan(dokumen.tubuh.offsetHeight);
}
</skrip>
Menambahkan defer berarti akan dieksekusi setelah halaman dimuat sepenuhnya, yang setara dengan window.onload, tetapi lebih fleksibel daripada window.onload dalam aplikasi!
Defer adalah "pahlawan tanpa tanda jasa" dalam kekuatan skrip. Ini memberi tahu browser bahwa segmen Skrip berisi kode yang tidak perlu segera dieksekusi, dan, jika digunakan bersama dengan atribut SRC, ini juga dapat menyebabkan skrip ini diunduh di latar belakang, dan konten di latar depan ditampilkan. kepada pengguna secara normal.
--Tetapi jalankan skrip setelah dokumen dimuat
Harap perhatikan dua poin:
1. Jangan memanggil perintah document.write di segmen skrip tipe defer, karena document.write akan menghasilkan efek keluaran langsung.
2. Selain itu, jangan sertakan variabel atau fungsi global apa pun yang akan digunakan oleh skrip eksekusi langsung di segmen skrip penangguhan.
Cara umum untuk mengoptimalkan kinerja adalah dengan menyetel atribut "defer" di tag <SCRIPT> ketika skrip tidak perlu segera dijalankan. (Skrip langsung tidak terdapat dalam blok fungsi, sehingga akan dieksekusi selama proses pemuatan.) Setelah menyetel atribut "defer", IE tidak perlu menunggu skrip dimuat dan dijalankan. Dengan cara ini halaman akan dimuat lebih cepat. Secara umum, ini juga berarti bahwa skrip langsung paling baik ditempatkan di blok fungsi dan menangani fungsi tersebut di pengendali onload dokumen atau objek isi. Properti ini berguna ketika ada beberapa skrip yang perlu dijalankan berdasarkan tindakan pengguna - seperti mengklik tombol atau menggerakkan mouse ke area tertentu. Namun ketika ada beberapa skrip yang perlu dijalankan selama atau setelah halaman dimuat, manfaat menggunakan atribut defer tidaklah besar.
Atribut defer dalam skrip adalah false secara default. Sesuai uraian pada Panduan Pemrograman DHTML, atribut Defer ditulis seperti ini:
Menggunakan atribut pada waktu desain dapat meningkatkan kinerja pengunduhan suatu halaman karena browser tidak perlu menguraikan dan menjalankan skrip dan sebagai gantinya dapat terus mengunduh dan menguraikan halaman tersebut.
Dengan kata lain: jika Anda menambahkan atribut defer saat menulis skrip, browser tidak harus langsung memprosesnya saat mendownload skrip, tetapi terus mendownload dan mengurai halaman, yang akan meningkatkan kinerja download.
Ada banyak situasi seperti itu. Misalnya, jika Anda mendefinisikan banyak variabel JavaScript, atau menulis banyak skrip di file referensi (.inc) yang perlu diproses, Anda sebaiknya menambahkan atribut defer ke skrip ini, yang pasti akan membantu meningkatkan kinerja .
Contohnya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
<skrip bahasa="javascript" tunda>
var objek = Objek baru();
....
</skrip>
Karena atribut defer defaultnya adalah false, maka di sini
<skrip bahasa="javascript" tunda>
Mendeklarasikan atribut defer secara eksplisit setara dengan
<skrip bahasa="javascript" defer=true>
Setelah mendeklarasikan atribut defer, Anda perlu menentukan apakah variabel lain merujuk ke variabel di blok skrip defer, jika tidak, kesalahan skrip akan terjadi.