Saya mempelajari JavaScript beberapa waktu lalu, dan saya merasa nyaman dengan diri saya sendiri saat itu. Sekarang aku memikirkannya, aku merasa itu bukan apa-apa. Tugas hari ini adalah mempelajari bab siklus hidup halaman klien di asp.net ajax. Namun, saya agak bingung dengan isi bab ini. Tak satu pun dari keraguan ini disebutkan dalam buku ini.
1. Bagaimana detail proses pemuatan halaman html? Apa prioritas elemen halaman saat memuat?
2. Cakupan JavaScript, cakupan variabel, dan hubungan antara segmen skrip yang berbeda?
3. Bagaimana siklus hidup halaman html?
Pertanyaan-pertanyaan ini sangat menyentuh hati saya. Tanpa memahami ini, saya tidak dapat melihat prinsip-prinsip yang mendasarinya melalui kerangka ajax asp.net. Saya hanya mengetahuinya tetapi tidak tahu alasannya.
Dalam hal pencarian informasi ekstensif di Internet. Punya beberapa jawaban.
Tentang memuat html:
Secara umum, HTML dimuat dan diurai secara berurutan dari atas ke bawah, sambil menghasilkan objek DOM. Adapun apa yang dicampur dalam HTML:
dokumen.write("xxxx");
<skrip type="teks/javascript" src="aaa.js"></skrip>
Apa pesanan mereka? Masih sama, jika Anda menemukan hal-hal ini saat mengurai HTML, Anda akan berhenti menguraikan dan menjalankan pernyataan yang dihasilkan ini. Jika tautan eksternal disisipkan di tengah, Anda akan mengurai dan menjalankan js yang sesuai dengan tautan eksternal. Pernyataan berikut mempunyai hasil yang berbeda untuk browser yang berbeda:
<skrip type="teks/javascript" src="aaa.js"></skrip>
di yaitu. Ini tidak akan menunggu aaa.js diunduh dan diurai. Ini akan membuat thread lain untuk menanganinya, dan thread utama akan dilewati. Tapi di ff. Ini akan menunggu hingga aaa.js diunduh, diuraikan, dan dieksekusi.
Mengenai eksekusi javascript, silakan lihat bahan referensi yang terlampir di akhir artikel ini, yang pembahasannya mendetail.
Tentang siklus hidup halaman dalam html:
Dua peristiwa terpenting adalah onLoad dan onUnLoad. onLoad dipicu saat halaman dimuat. onUnLoad dipicu setelah DOM halaman dihancurkan. Namun onLoad agak istimewa, silakan lihat juga bahan referensi yang terlampir di akhir artikel ini. Pastikan untuk menarik perhatian.
Saya melihat kode sumber html dari beberapa situs dan menemukan kode berikut:
<div><skrip src="/ggjs/view1602_w.js"></skrip></div>
Ini adalah kode situs web untuk menampilkan iklan di halaman. Di situs domestik, iklan bergambar biasanya menggunakan iframe untuk memperkenalkan halaman pihak ketiga, tetapi di sini iklan tersebut dibuat langsung menggunakan segmen javascript. Nanti saya lihat kode html yang dihasilkan oleh blog 163 itu sangat tidak normal. Seluruh kode html hanya memiliki satu rak, dan semua halaman dibuat melalui js. Saya melihat beberapa file js dimasukkan di belakang halaman, dan akhirnya ada panggilan ke fungsi initAll di akhir halaman. Saya belum mempelajari kode jsnya dengan cermat. Saya menduga kode tersebut menempatkan semua fungsi lapisan presentasi ke dalam file js klien. Sisi server hanyalah beberapa rak halaman dan banyak layanan web. Sungguh menakjubkan.
Mengenai suatu peristiwa yang memicu beberapa fungsi respons:
Saya pernah berpikir untuk mengimplementasikan sesuatu yang mirip dengan delegasi di C#. Peristiwa JavaScript dapat dikaitkan dengan lebih dari satu fungsi. Daftar peristiwa dapat dipicu pada suatu waktu. Saya telah mempelajari asp.net ajax hari ini dan ada paket untuk ini.
Di asp.net ajax, elemen dom dapat dienkapsulasi menjadi objek Sys.UI.DomElement di asp.net ajax. Kemudian Anda dapat menggunakan metodenya: addHandler(), addHandlers(), deleteHander() untuk mengoperasikan daftar acara. Betapa nyamannya. Saya tidak begitu memahami prinsip ini pada saat itu. Hari ini saya melihat dua potongan kode pada bahan referensi di bawah ini, yang membuat saya memahami sepenuhnya detailnya:
1. Gunakan antarmuka di dom 2:
Copy kode kodenya sebagai berikut:
if(dokumen.addEventListener){
window.addEventListener('beban',f,false);
window.addEventListener('beban',f1,false);
…
}kalau tidak{
window.attachEvent('onload',f);
window.attachEvent('onload',f1);
…
}
Ternyata konsep ini sudah ada di DOM. Baru saat itulah aku tahu. Sepertinya masih banyak hal yang belum aku mengerti tentang dom.
Kedua, metode ini diterapkan murni dengan tangan. Lihat kode di bawah ini:
Copy kode kodenya sebagai berikut:
fungsi addLoadEvent(fungsi) {
var oldonload = jendela.onload;
if (typeof window.onload != 'fungsi') {
window.onload = fungsi;
} kalau tidak {
jendela.onload = fungsi() {
jika (muat lama) {
lamaonload();
}
fungsi();
}
}
}
Fungsi ini ditulis dengan sangat cerdik. Gunakan fungsi anonim untuk menyelesaikannya!