Ich habe mich vor einiger Zeit mit JavaScript beschäftigt und fühlte mich damals gut. Wenn ich jetzt darüber nachdenke, habe ich das Gefühl, dass es nichts ist. Die heutige Aufgabe besteht darin, das Kapitel über den Lebenszyklus der Clientseite in asp.net Ajax zu studieren. Der Inhalt dieses Kapitels hat mich jedoch etwas verwirrt. Keiner dieser Zweifel wird im Buch erwähnt.
1. Wie läuft der detaillierte Ladevorgang der HTML-Seite ab? Welche Priorität haben Seitenelemente beim Laden?
2. Der Umfang von JavaScript, der Umfang von Variablen und die Beziehung zwischen verschiedenen Skriptsegmenten?
3. Wie ist der Lebenszyklus einer HTML-Seite?
Diese Fragen haben mich wirklich berührt. Ohne diese zu verstehen, kann ich die zugrunde liegenden Prinzipien nicht durch das asp.net-Ajax-Framework erkennen. Ich weiß es nur, weiß aber nicht warum.
Bei umfangreicher Informationssuche im Internet. Habe einige Antworten bekommen.
Informationen zum Laden von HTML:
Im Allgemeinen wird HTML in der Reihenfolge von oben nach unten geladen und analysiert, während DOM-Objekte generiert werden. Was in HTML gemischt wird:
document.write("xxxx");
<script type="text/javascript" src="aaa.js"></script>
Wie ist ihre Reihenfolge? Wenn Sie jedoch beim Parsen von HTML auf diese Dinge stoßen, stoppen Sie das Parsen und führen diese generierten Anweisungen aus. Wenn in der Mitte ein externer Link eingefügt wird, analysieren Sie die dem externen Link entsprechenden JS und führen sie aus. Die folgenden Anweisungen haben für verschiedene Browser unterschiedliche Ergebnisse:
<script type="text/javascript" src="aaa.js"></script>
in dh. Es wird nicht darauf gewartet, dass aaa.js heruntergeladen und analysiert wird. Es wird ein weiterer Thread zur Verarbeitung erstellt und der Hauptthread wird übergeben. Aber in ff. Es wird gewartet, bis aaa.js heruntergeladen, analysiert und ausgeführt wird.
Informationen zur Ausführung von Javascript finden Sie in den Referenzmaterialien am Ende dieses Artikels, in denen ausführlich erläutert wird.
Über den Lebenszyklus von Seiten in HTML:
Die beiden wichtigsten Ereignisse sind onLoad und onUnLoad. onLoad wird ausgelöst, wenn die Seite geladen wird. onUnLoad wird ausgelöst, nachdem das DOM der Seite zerstört wurde. Allerdings ist onLoad etwas Besonderes. Bitte beachten Sie auch die Referenzmaterialien am Ende dieses Artikels. Achten Sie darauf, Aufmerksamkeit zu erregen.
Ich habe mir den HTML-Quellcode mehrerer Websites angesehen und den folgenden Code gefunden:
<div><script src="/ggjs/view1602_w.js"></script></div>
Dies ist der Code für eine Website, um Werbung auf der Seite anzuzeigen. Auf inländischen Websites werden bei Display-Werbung normalerweise Iframes verwendet, um Seiten Dritter einzuleiten. Hier werden sie jedoch direkt mithilfe von Javascript-Segmenten generiert. Später habe ich mir den vom 163-Blog generierten HTML-Code angesehen. Er war so ungewöhnlich. Der gesamte HTML-Code hat nur ein Regal und alle Seiten werden über js generiert. Ich habe gesehen, dass hinter der Seite mehrere js-Dateien eingefügt wurden und schließlich am Ende der Seite die Funktion initAll aufgerufen wurde. Ich habe den js-Code nicht sorgfältig studiert. Ich vermute, dass er alle Funktionen der Präsentationsschicht in die js-Datei des Clients einfügt. Die Serverseite besteht nur aus ein paar Seitenracks und vielen Webdiensten. Es ist wirklich atemberaubend.
Bezüglich eines Ereignisses, das mehrere Antwortfunktionen auslöst:
Ich habe einmal darüber nachgedacht, etwas Ähnliches wie einen Delegaten in C# zu implementieren. JavaScript-Ereignisse können mit mehr als einer Funktion verknüpft sein. Eine Liste von Ereignissen kann gleichzeitig ausgelöst werden. Ich habe in diesen Tagen asp.net Ajax studiert und es gibt ein Paket dafür.
In asp.net Ajax kann ein Dom-Element in ein Sys.UI.DomElement-Objekt in asp.net Ajax gekapselt werden. Dann können Sie die folgenden Methoden verwenden: addHandler(), addHandlers(), removeHander(), um die Ereignisliste zu bedienen. Wie praktisch. Dieses Prinzip verstand ich damals noch nicht ganz. Heute habe ich die beiden Codeteile im folgenden Referenzmaterial gesehen, wodurch ich die Details vollständig verstanden habe:
1. Verwenden Sie die Schnittstelle in Dom 2:
Kopieren Sie den Codecode wie folgt:
if(document.addEventListener){
window.addEventListener('load',f,false);
window.addEventListener('load',f1,false);
…
}anders{
window.attachEvent('onload',f);
window.attachEvent('onload',f1);
…
}
Es stellt sich heraus, dass dieses Konzept bereits in DOM existiert. Erst dann wusste ich es. Es scheint, dass es immer noch viele Dinge gibt, die ich über Dom nicht verstehe.
Zweitens wird diese Methode rein manuell umgesetzt. Siehe den Code unten:
Kopieren Sie den Codecode wie folgt:
Funktion addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} anders {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
Diese Funktion ist sehr clever geschrieben. Verwenden Sie anonyme Funktionen, um es zu erledigen!