2011-03-14 9 views
6

Ahora que entiendo how to access tanto el HTML puro + Javascript (como se recibe a través de HTTP GET) y el resultado renderizado de procesamiento automático del Javascript al finalizar carga de la página, que necesitan entender cómo se está haciendo:¿Cómo un navegador convierte AUTOMÁTICAMENTE el "Origen de página" Javascript a HTML?

  1. ¿hay una función específica Javascript , incrustado en el HTTP GET resonse crudo, que el navegador busca de , y cuando lo encuentra, simplemente llama ella? (En otras palabras, ¿es la responsabilidad del programador página Web dar instrucciones al navegador para escanear el contenido crudo y sustituto de todos los no-interactiva Javascript a HTML?)
  2. ¿El navegador analizar toda la página , en busca de ciertas pistas, y decide qué convertir? Si es así, ¿Cuáles son estas señales y cómo se está haciendo ?

Siendo totalmente fresco en este tema, es muy posible que nada de lo anterior se aplique y el truco se realiza de manera completamente diferente. Si este es realmente el caso, ¿serías tan amable de guiarme en cómo volver a formular la pregunta?

Respuesta

3

La especificación HTML define las circunstancias bajo las cuales se ejecuta Javascript. Algunos javascript están asociados a los atributos onSOMETHING, y se ejecuta a la hora definida. Un ejemplo importante de esto es 'onload'. Otro Javascript está simplemente en bloques de nivel superior dentro de los elementos <script>. Por especificación, el navegador ejecuta eso cada vez que se siente, solo en orden.

No hay 'conversión' ni 'sustitución'. Javascript es un lenguaje de programación. El navegador ejecuta el código. En algunos casos, el código interactúa con el árbol DOM para producir contenidos visualizables. En otros casos, no (por ejemplo, enviar información a través de una conexión).

+0

Gracias por la gran respuesta. Podría aclarar lo siguiente para mí?Entiendo las partes interactivas de HTML/Javascript/DOM, es decir, onClick, onMouseOver, etc. - El navegador simplemente las deja intactas al producir el HTML "renderizado". Pero, ¿cómo sabe qué * no * dejar intacto y más bien ejecutar esto una vez completa la página? ¿Qué significa "cada vez que se siente"? ¿No hay un estándar a seguir? Es una categoría de funciones de Javascript que está destinada a la auto-ejecución? – PeSmith

+1

@PeSmith: lo siento por secuestrar, y no estoy seguro si estoy respondiendo tu punto, pero todo el JavaScript es "auto-ejecutado": cuando el navegador encuentra una etiqueta '

1

El navegador analiza el código HTML y, al encontrar el código JavaScript incluido en las etiquetas <script>, evalúa el JavaScript encontrado que puede dar lugar a cambios en la estructura y/o el contenido del documento que se vuelven visibles para el usuario.

0

¿Hay una función específica de Javascript, incrustada en la resonancia HTTP GET sin formato, que busca el buscador, y cuando la encuentra, simplemente la llama? (en otras palabras, ¿es responsabilidad del programador de la página web ordenar al navegador que escanee el contenido sin procesar y sustituir todo el JavaScript no interactivo por HTML?)

No hay muchos. Ver http://dev.opera.com/articles/view/creating-and-modifying-html/

(En realidad, probablemente debería comenzar en http://dev.opera.com/articles/view/1-introduction-to-the-web-standards-cur/#toc)

¿El navegador analiza toda la página, en busca de ciertas señales, y luego decide qué convertir? Si es así, ¿cuáles son estas señales

<script>

y cómo se está haciendo?

DOM

3

HTML obtiene secuencialmente cargado. Cuando se descubre una etiqueta de script, el navegador ejecuta la secuencia de comandos. Por ejemplo:

<div id="test"></div> 
<script type="text/javascript">document.getElementById("test").innerHTML = "Hi there!";</script> 

Sin embargo, si usted tiene el siguiente documento

<script type="text/javascript">document.getElementById("test").innerHTML = "Hi there!";</script> 
<div id="test"></div> 

no pasaría nada, porque en el momento en que el navegador ejecuta la secuencia de comandos, el navegador no se ha descubierto el div prueba todavía.

1

I red your last thread. Déjame que te diga esto, Un navegador tiene una versión HTML de la página y una versión DOM (Document Object Model) de la misma. Cuando un Javascript cambia algo, se cambia en el DOM. Al principio DOM se genera a partir de la página HTML,

Por lo tanto, Javascript no cambia el origen de la página.

su pregunta aquí es totalmente irrelevante, ya que el navegador hace esta operación de carga de una página: solicitud

  1. HTTP para recibir los datos (posiblemente un documento HTML)
  2. analizar los datos recibidos (si es HTML)
  3. buscar otros recursos en los datos analizados (enlaces a otros Javascript, CSS, imágenes, etc.)
  4. descargar los recursos restantes (bucle de nuevo al paso 2)
  5. Generar la DOM, ejecuta CSS y Scripts, muestra imágenes.

El navegador comienza a ejecutar todos los javascript de arriba a abajo de los datos recibidos. También puede asignar la función Javascript a los eventos de los elementos en la página, de modo que cuando se desencadena el evento, se llame automáticamente a la función javascript especificada.

Analizar HTML y ejecutar su javascript no tiene nada que ver con el protocolo HTTP y se puede hacer únicamente en su propia computadora (abrir un archivo HTML en su disco).

+1

Este no es realmente mi campo, pero creo que * JavaScript se ejecuta durante la etapa de análisis de HTML: el análisis de HTML hace una pausa mientras se ejecuta el script. Esto se debe a que JavaScript incluye 'document.write', que escribe contenido HTML en el DOM. Por otra parte, no sé si los navegadores * literalmente * dejan de analizar el HTML, o si su descripción está más cerca de lo que realmente hacen. –

+2

@Paul - Tengo entendido que los analizadores tradicionalmente han dejado de analizar literalmente, porque puedes hacer cosas como 'document.write (' Alohci

3

Cuando un navegador web analiza una página HTML, si encuentra un elemento <script>, deja de analizar el HTML y ejecuta el elemento JavaScript en (o vinculado por) el elemento <script> inmediatamente *.

El código JavaScript puede modificar el DOM de la página (Document Object Model, la representación programática del HTML al que JavaScript puede acceder), y así cambiar el HTML representado que muestra el navegador. (También puede asignar funciones a controladores de eventos incorporados en nodos DOM, para que se pueda ejecutar JavaScript, por ejemplo, cuando el usuario hace clic en un enlace o cuando el documento ha terminado de cargarse).

De hecho, es totalmente la responsabilidad del programador de la página web para hacer esto. Los navegadores no adivinan qué hacer con el JavaScript descargado. Ellos corren y lo obedecen.

(* Eso es un poco de una simplificación: el atributo defer puede evitar que la secuencia de comandos que se ejecuten inmediatamente.)

+1

Difícilmente importa en este nivel, pero es un poco más preciso decir que la secuencia de comandos se ejecuta cuando el analizador encuentra la etiqueta ''. Esto tiene sentido si piensas en la forma en que funciona document.write inyectando caracteres en la secuencia de entrada del analizador. – Alohci

+0

@Alohci: ah, sí veo tu punto. Pondré "'

  • 11. Salto a una nueva página HTML con JavaScript
  • 12. ¿Cómo obtener el origen de la página en la afeitadora?
  • 13. Convierte .doc a html en php
  • 14. Programa que convierte html a imagen
  • 15. ¿Describe el proceso de representación de página en un navegador?
  • 16. convertir html a javascript
  • 17. ¿Cómo pasar de una página a otra usando javascript?
  • 18. Redirigir automáticamente a una página
  • 19. ¿Cómo enlazar a un javascript gzip en un documento html?
  • 20. ¿Convierte HTML a Textile en Ruby?
  • 21. Convierte contenido de UIWebview a un UIImage
  • 22. Convierte cadena a booleana en javascript
  • 23. variable de .jsp a la página html
  • 24. Convierte el Geochart de Google a una imagen (JPEG, PNG, etc.) o PDF en el navegador
  • 25. Convierte .NET DateTimeFormatInfo a Javascript jQuery formatDate?
  • 26. Cómo evitar que jQuery .html() escape el atributo href automáticamente?
  • 27. Redireccionando a la página html local desde javascript en phonegap
  • 28. Borrar la página HTML con JavaScript
  • 29. Cómo PUBLICAR un FORMULARIO de la página HTML a ASPX
  • 30. Eliminar todo el JavaScript de una página HTML