Der Javascript-Skriptcode in der Webseite muss häufig ausgeführt werden, nachdem das Dokument geladen wurde. Andernfalls kann das Objekt möglicherweise nicht abgerufen werden. Um diese Situation zu vermeiden, können Sie die folgenden zwei Methoden verwenden:
1. Platzieren Sie den Skriptcode am unteren Ende der Webseite, damit Sie beim Ausführen des Skriptcodes sicherstellen können, dass das zu bedienende Objekt geladen wurde.
2. Führen Sie den Skriptcode über window.onload aus.
Die erste Methode fühlt sich chaotisch an (tatsächlich wird sie empfohlen). Oft müssen wir den Skriptcode an einer geeigneteren Stelle platzieren, daher ist die Methode window.onload die bessere Wahl. window.onload ist ein Ereignis, das beim Laden des Dokuments ausgelöst wird. Sie können einen Ereignishandler für dieses Ereignis registrieren und den auszuführenden Skriptcode in den Ereignishandler einfügen. . Schauen wir uns zunächst ein Codebeispiel an:
<!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>
Die ursprüngliche Absicht des obigen Codes besteht darin, die Hintergrundfarbe des Div auf #F90 zu setzen, aber dieser Effekt wird nicht erreicht. Dies liegt daran, dass der Code nacheinander ausgeführt wird, um document.getElementById(" #bg").style. Wenn backgroundColor="#F90" geschrieben wird, wurde dieses div-Objekt noch nicht geladen, sodass die Einstellung nicht erfolgreich sein kann. Der Code wird wie folgt geändert:
<!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>
Der Grund dafür ist, dass der Code zum Festlegen der Hintergrundfarbe in der Ereignisverarbeitungsfunktion von window.onload platziert wird. Erst wenn das Dokument geladen wird, werden die Ereignisverarbeitungsfunktion und der Skriptcode zum Festlegen der Hintergrundfarbe ausgeführt.
Event-Handler-Funktionsbindung:
Methode 1:
window.onload=function(){}, im obigen Code wird diese Methode verwendet, um die Ereignisverarbeitungsfunktion an das window.onload-Ereignis zu binden. Natürlich ist es eine anonyme Funktion Funktionen können auch gebunden werden, das Codebeispiel lautet wie folgt:
<!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>
Der obige Code kann die myalert-Methode an das window.onload-Ereignis binden, aber nicht mehrere Ereignishandler auf folgende Weise an dieses Ereignis binden:
window.onload=function a(){}
window.onload=function b(){}
Der obige Code kann nicht mehrere Ereignisbehandlungsfunktionen an das window.onload-Ereignis binden, aber die letzte überschreibt alle vorherigen Funktionen. Der Code kann jedoch geändert werden:
<!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>
Der obige Code erzielt den gleichen Effekt durch die Bindung mehrerer Ereignisverarbeitungsfunktionen.
Methode 2:
Sie können addEventListener() und attachmentEvent() verwenden, um Ereignisverarbeitungsfunktionen an das Onload-Ereignis zu binden. Folgendes wird jeweils eingeführt:
addEventListener() ist die aktuelle Standardmethode zum Binden von Ereignisverarbeitungsfunktionen, aber Browser IE8 und niedriger unterstützen diese Methode nicht:
<!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>
Der obige Code kann mehrere Ereignishandler an das window.onload-Ereignis binden. Eine kurze Einführung in das Syntaxformat:
addEventListener("type", Funktionsname, false)
Die Funktion addEventListener() verfügt über drei Parameter. Der erste Parameter ist der Ereignistyp. Es ist zu beachten, dass vor dem Ereignistypnamen kein „on“ stehen kann. Beispielsweise kann das Ereignis „window.onload“ nur geschrieben werden Load an dieser Stelle. Der zweite Parameter ist der Name der zu bindenden Funktion, und der dritte Parameter ist im Allgemeinen falsch.
Verwenden Sie die Funktion attachmentEvent(), um die Ereignisverarbeitungsfunktion zu binden:
IE-Browser vor IE9 unterstützen die Funktion addEventListener() nicht, daher kommt die Funktion attachmentEvent() ins Spiel. Das Codebeispiel lautet wie folgt:
<!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>
Die Wirkung des obigen Codes ist die gleiche wie bei der Verwendung der Funktion addEventListener(). Lassen Sie uns kurz das Syntaxformat vorstellen:
addEventListener("type", Funktionsname)
Diese Funktion hat nur zwei Parameter, aber sie hat die gleiche Funktion wie der erste Parameter von addEventListener(), aber der Name ist anders. Der erste Parameter ist der Name der zu bindenden Event-Handler-Funktion. Um mit verschiedenen Browsern kompatibel zu sein, muss der obige Code geändert werden. Beispiele sind wie folgt:
<!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>
Der obige Code löst die Kompatibilitätsprobleme der wichtigsten Browser. Verwenden Sie den folgenden Code, um den obigen Code zu beurteilen:
if(object.addEventListener){ object.addEventListener(); } else{ object.attachEvent(); }
Verwenden Sie die if-Anweisung, um zu bestimmen, ob das Objekt über das Attribut addEventListener verfügt. Wenn ja, verwenden Sie die Funktion addEventListener(), andernfalls verwenden Sie die Funktion attachmentEvent()