Kod skrip javascript dalam halaman web selalunya perlu dilaksanakan selepas dokumen dimuatkan, jika tidak, objek mungkin tidak diperolehi Untuk mengelakkan situasi ini, anda boleh menggunakan dua kaedah berikut:
1. Letakkan kod skrip di hujung bawah halaman web, supaya apabila menjalankan kod skrip, anda boleh memastikan objek yang akan dikendalikan telah dimuatkan.
2. Laksanakan kod skrip melalui window.onload.
Kaedah pertama terasa tidak kemas (sebenarnya, selalunya kita perlu meletakkan kod skrip di tempat yang lebih sesuai, jadi kaedah window.onload adalah pilihan yang lebih baik. window.onload ialah peristiwa ini akan dicetuskan apabila dokumen dimuatkan Anda boleh mendaftarkan pengendali acara untuk acara ini dan meletakkan kod skrip untuk dilaksanakan dalam pengendali acara. . Mari lihat contoh kod dahulu:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <title>window.onload用法</title> <style type="text/css"> #bg{ width:100px; height:100px; border:2px solid red; } </style> <script type="text/javascript"> document.getElementById("bg").style.backgroundColor="#F90"; </script> </head> <body> <div id="bg"></div> </body> </html>
Niat asal kod di atas adalah untuk menetapkan warna latar belakang div kepada #F90, tetapi ia tidak mencapai kesan ini kerana kod tersebut dilaksanakan secara berurutan apabila ia dilaksanakan ke document.getElementById(" #bg").style. Apabila backgroundColor="#F90" ditulis, objek div ini belum dimuatkan lagi, jadi tetapan tidak boleh berjaya. Kod tersebut diubah suai seperti berikut:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <title>位置高度div垂直居中</title> <style type="text/css"> #bg{ width:100px; height:100px; border:2px solid red; } </style> <script type="text/javascript"> window.onload=function(){ document.getElementById("bg").style.backgroundColor="#F90"; } </script> </head> <body> <div id="bg"></div> </body> </html>
Sebabnya ialah kod untuk menetapkan warna latar belakang diletakkan dalam fungsi pemprosesan acara window.onload Hanya apabila dokumen dimuatkan, fungsi pemprosesan acara dan kod skrip untuk menetapkan warna latar belakang akan dilaksanakan.
Fungsi pengendali acara mengikat:
Kaedah 1:
window.onload=function(){}, dalam kod di atas, kaedah ini digunakan untuk mengikat fungsi pemprosesan acara ke acara window.onload Apa yang terikat di sini ialah fungsi tanpa nama fungsi juga boleh terikat , contoh kod adalah seperti berikut:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <title>window.onload用法详解</title> <script type="text/javascript"> window.onload=function myalert() { "); } </script> </head> <body> </body> </html>
Kod di atas boleh mengikat kaedah myalert ke acara window.onload, tetapi tidak boleh mengikat berbilang pengendali acara ke acara ini dengan cara berikut:
window.onload=function a(){}
window.onload=function b(){}
Kod di atas tidak boleh mengikat berbilang fungsi pengendalian acara ke acara window.onload, tetapi yang terakhir akan menimpa semua fungsi sebelumnya. Tetapi kod itu boleh diubah suai:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <title>window.onload用法</title> <style type="text/css"> #bg{ width:100px; height:100px; border:2px solid red; } </style> <script type="text/javascript"> window.onload=function(){ function a(){ document.getElementById("bg").style.backgroundColor="#F90"; } function b(){ document.getElementById("bg").style.width="200px"; } a(); b(); } </script> </head> <body> <div id="bg"></div> </body> </html>
Kod di atas mencapai kesan yang sama untuk mengikat berbilang fungsi pemprosesan acara.
Kaedah 2:
Anda boleh menggunakan addEventListener() dan attachEvent() untuk mengikat fungsi pemprosesan acara kepada acara onload Perkara berikut diperkenalkan masing-masing:
addEventListener() ialah cara standard semasa untuk mengikat fungsi pemprosesan acara, tetapi pelayar IE8 dan ke bawah tidak menyokong kaedah ini seperti berikut:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <title>window.onload用法</title> <style type="text/css"> #bg{ width:100px; height:100px; border:2px solid red; } </style> <script type="text/javascript"> window.addEventListener("load",bg,false); window.addEventListener("load",changeW,false); function bg(){ document.getElementById("bg").style.backgroundColor="#F90"; } function changeW(){ document.getElementById("bg").style.width="200px"; } </script> </head> <body> <div id="bg"></div> </body> </html>
Kod di atas boleh mengikat berbilang pengendali acara ke acara window.onload. Pengenalan ringkas kepada format sintaks:
addEventListener("jenis", nama fungsi, palsu)
Fungsi addEventListener() mempunyai tiga parameter Parameter pertama ialah jenis acara Perlu diingat bahawa tidak boleh ada di hadapan nama jenis acara memuatkan di tempat ini Parameter kedua ialah nama fungsi yang akan diikat, dan parameter ketiga biasanya palsu.
Gunakan fungsi attachEvent() untuk mengikat fungsi pemprosesan acara:
Pelayar IE sebelum IE9 tidak menyokong fungsi addEventListener(), jadi fungsi attachEvent() mula dimainkan Contoh kod adalah seperti berikut:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <title>window.onload用法</title> <style type="text/css"> #bg{ width:100px; height:100px; border:2px solid red; } </style> <script type="text/javascript"> window.attachEvent("onload",bg); window.attachEvent("onload",changeW); function bg(){ document.getElementById("bg").style.backgroundColor="#F90"; } function changeW(){ document.getElementById("bg").style.width="200px"; } </script> </head> <body> <div id="bg"></div> </body> </html>
Kesan kod di atas adalah sama seperti penggunaan fungsi addEventListener() Mari perkenalkan secara ringkas format sintaks:
addEventListener("jenis", nama fungsi)
Fungsi ini hanya mempunyai dua parameter Parameter pertama ialah jenis acara, tetapi ia mempunyai fungsi yang sama dengan parameter pertama addEventListener(), tetapi nama itu mempunyai "on" di hadapannya. Parameter pertama ialah nama fungsi pengendali acara yang akan diikat. Untuk serasi dengan pelbagai pelayar, kod di atas perlu diubah suai contohnya:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <title>window.onload用法</title> <style type="text/css"> #bg{ width:100px; height:100px; border:2px solid red; } </style> <script type="text/javascript"> if(window.addEventListener){ window.addEventListener("load",bg,false); window.addEventListener("load",changeW,false); } else{ window.attachEvent("onload",bg); window.attachEvent("onload",changeW); } function bg(){ document.getElementById("bg").style.backgroundColor="#F90"; } function changeW(){ document.getElementById("bg").style.width="200px"; } </script> </head> <body> <div id="bg"></div> </body> </html>
Kod di atas menyelesaikan isu keserasian penyemak imbas utama. Gunakan kod berikut untuk menilai kod di atas:
if(object.addEventListener){ object.addEventListener(); } else{ object.attachEvent(); }
Gunakan pernyataan if untuk menentukan sama ada objek mempunyai atribut addEventListener Jika ya, gunakan fungsi addEventListener(), jika tidak gunakan fungsi attachEvent()
.