Pasé por JavaScript hace un tiempo y me sentí bien conmigo mismo en ese momento. Ahora que lo pienso, siento que no es nada. La tarea de hoy es estudiar el capítulo sobre el ciclo de vida de la página del cliente en asp.net ajax. Sin embargo, estaba un poco confundido por el contenido de este capítulo. Ninguna de estas dudas se menciona en el libro.
1. ¿Cuál es el proceso de carga detallado de la página html? ¿Cuál es la prioridad de los elementos de la página al cargar?
2. ¿El alcance de JavaScript, el alcance de las variables y la relación entre diferentes segmentos de script?
3. ¿Cuál es el ciclo de vida de una página html?
Estas preguntas realmente me impactaron. Sin comprenderlos, no puedo ver los principios subyacentes a través del marco asp.net ajax. Sólo lo sé pero no sé por qué.
En el caso de una búsqueda exhaustiva de información en Internet. Tengo algunas respuestas.
Acerca de cargar html:
En términos generales, HTML se carga y analiza en orden de arriba a abajo, mientras se generan objetos DOM. En cuanto a lo que se mezcla en HTML:
documento.write("xxxx");
<script tipo="text/javascript" src="aaa.js"></script>
¿Cuál es su orden? De todos modos, si encuentra estas cosas al analizar HTML, dejará de analizar y ejecutará estas declaraciones generadas. Si se inserta un enlace externo en el medio, analizará y ejecutará el js correspondiente al enlace externo. Las siguientes declaraciones tienen resultados diferentes para diferentes navegadores:
<script tipo="text/javascript" src="aaa.js"></script>
en es decir. No esperará a que se descargue y analice aaa.js. Creará otro hilo para manejarlo y el hilo principal pasará por alto. Pero en ff. Esperará hasta que aaa.js se descargue, analice y ejecute.
Con respecto a la ejecución de JavaScript, consulte los materiales de referencia adjuntos al final de este artículo, que contienen una discusión detallada.
Sobre el ciclo de vida de las páginas en html:
Los dos eventos más importantes son onLoad y onUnLoad. onLoad se activa cuando se carga la página. onUnLoad se activa después de que se destruye el DOM de la página. Sin embargo, onLoad es un poco especial; consulte también los materiales de referencia adjuntos al final de este artículo. Asegúrate de llamar la atención.
Miré el código fuente html de varios sitios y encontré el siguiente código:
<div><script src="/ggjs/view1602_w.js"></script></div>
Este es el código para que un sitio web muestre anuncios en la página. En los sitios web nacionales, los anuncios mostrados generalmente usan iframes para presentar páginas de terceros, pero aquí se generan directamente usando segmentos de JavaScript. Más tarde, miré el código html generado por el blog 163. Era muy anormal. Todo el código html tiene un solo estante y todas las páginas se generan a través de js. Vi que se introdujeron varios archivos js detrás de la página y finalmente hubo una llamada a la función initAll al final de la página. No he estudiado detenidamente su código js. Sospecho que coloca todas las funciones de la capa de presentación en el archivo js del cliente. El lado del servidor son solo unos pocos bastidores de páginas y muchos servicios web. Es realmente impresionante.
Respecto a un evento que desencadena múltiples funciones de respuesta:
Una vez pensé en implementar algo similar a un delegado en C#. Los eventos de JavaScript se pueden asociar con más de una función. Se puede activar una lista de eventos a la vez. He estado estudiando asp.net ajax estos días y hay un paquete para esto.
En asp.net ajax, un elemento dom se puede encapsular en un objeto Sys.UI.DomElement en asp.net ajax. Luego puede usar sus métodos: addHandler(), addHandlers(), removeHander() para operar la lista de eventos. Qué conveniente. No entendí muy bien este principio en ese momento. Hoy vi los dos fragmentos de código en el material de referencia a continuación, lo que me hizo comprender completamente los detalles:
1. Utilice la interfaz en dom 2:
Copie el código de código de la siguiente manera:
si(document.addEventListener){
ventana.addEventListener('cargar',f,false);
ventana.addEventListener('cargar',f1,falso);
…
}demás{
ventana.attachEvent('onload',f);
ventana.attachEvent('onload',f1);
…
}
Resulta que este concepto ya existía en DOM. Sólo entonces lo supe. Parece que todavía hay muchas cosas que no entiendo sobre dom.
En segundo lugar, este método se implementa puramente a mano. Vea el código a continuación:
Copie el código de código de la siguiente manera:
función agregarCargaEvent(función) {
var oldonload = ventana.onload;
if (tipo de ventana.onload! = 'función') {
ventana.onload = func;
} demás {
ventana.onload = función() {
si (descarga anterior) {
carga antigua();
}
función();
}
}
}
Esta función está escrita de manera muy inteligente. ¡Utiliza funciones anónimas para hacerlo!