<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.2.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Barra de progreso en JavaScript para monitorear la carga de imágenes</title>
	<link>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/</link>
	<description>AJAX, HTML, PHP5 y otros vicios...</description>
	<pubDate>Fri, 18 May 2012 11:13:20 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.2</generator>

	<item>
		<title>By: z666zz666z</title>
		<link>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-12434</link>
		<author>z666zz666z</author>
		<pubDate>Wed, 19 Oct 2011 08:57:43 +0000</pubDate>
		<guid>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-12434</guid>
		<description>Muy bueno, para imágenes...

Pero, y ¿para el propio HTML?

Pongo un ejemplo... en un html tenemos una lista muy muy larga de opciones (miles)... que tarda en ser cargada lo suyo...

Explicación: El código html se hace muy muy largo... y el /body no llega hasta pasados unos minutos (conexiones lentas) o un par de segundos (conexión fibra óptica a 100Mbt/s)

Otra posibilidad: el código html está siendo generado por php, lee de unos archivos y va entregando html poco a poco... como en procesar los archivos tarde algo... la carga del html se nota mucho...

Por ello, ¿cómo se pude poner una especie de barra de progreso para saber cúanto se ha cargado de la parte html? es decir (desde el body hasta el /body...

Bueno eso lo veo difícil o imposible... pero caray, lo que si se de antemano es la cantidad de elementos de la lista o el número de iteraciones de php en el bucle, con lo que en el head en un script de javascript si puedo saber cuántos "registros", filas, capas, etc... va a tener la página...

Obviamente lo del onload del body no me sirve, porque salta cuando todo el html está cargado.

Explico esto: Una solución (mala porque no da el % de progreso) es colocar un gif animado que diga estoy cargando, espere... y en el onload ocultarlo, jeje, eso no permite indicarle al usuario por qué porcentaje de carga va el html.

Si uso un temporizador que altere el innerHTML de la capa para representar el %... la leche el navegador no actualiza la pantalla, si que salta el temporizador y éste si que que modifica el innerHTML, pero en pantalla no se ve el cambio.

Se me ocurre matar el problema a cañonazos, metiendo un iframe donde se muestre el progreso, pero me topo con otro problema... entre el body y el /body no está permitida la marca script (aunque los navegadores la interpreten bien)... así que tampoco me vale...

Nota: Ha de pasar el validador de XHTML 1.1 estricto y el de CSS 2.1 (obligación impuesta por los altos mandos, jeje)

Así que me veo con un problema muy gordo... que de momento no se reolver... o quizás si...

Solución: Matar a cañonazos... me explico:
-Se que es una burrada hacerlo así, pero al menos debería funcionar, jeje
-Se incrementa bastante el tamaño del html
-Queda muy guarro el fuente html

Ahí va:
-Tras cada iteración poner una capa encima de todas las anteriores, con el nuevo valor del %
-En el onload del body ocultar todas las capas, si todas, porque cada una tapa a todas las anteriores.

Ejemplo:
-Opción1
-Capa1 con el % =1
-Opción2
-Capa2 con el % =2 que tape a la Capa 1
...
-OpciónN
-CapaN con el % = N que tape a todas la Capa# anteriores
-Opción100
-Capa100 con el % = 100 que tape a todas la Capa# anteriores

Espero que la idea quede clara... ¿alguna alternativa a esta tremenda chapuza?

Encima para colmo algunos navegadores se niegan a mostrar nada hasta tener el 100% del html cargado, arrrgg!!! ¿cómo se soluciona esto sin usar frames ni iframes? aunque dudo que se pueda, quizás alguien sepa cómo.

De momento creo que la única solución pasa por usar un iframe con un timer que analice la existencia o no de ciertos "checkpoints" metidos de clavo en el html principal:

Por ejemplo si cada opción es una capa div con un id="Opcion#" donde # va cambiando... en el timer se puede averiguar hasta cuál está cargado... intentanto acceder al id="Opcion100" y si falla al id="Opcion99", etc... queda mucho más limpio... pero requiere bien de un frameset o de un iframe...

Total es una pesadilla querer hacer una especie de barra de progreso que muestre el % cargado de la parte html de la página.

Espero haber dejado claro que hablo de mostrar al usuario el % de carga de la página, la parte entre body y /body, no hablo para nada del porcentaje de carga de cada imágen... de hecho la página podría carecer totalmente de imágenes... lo que necesito es mostrarle al usuario cuántas opciones están cargadas (en porcentaje me basta) de una especie de lista y hacerlo mientras el código html viaja del servidor al navegador cliente.

Para dejarlo más claro aún... imaginad que la página html tiene miles y miles de párrafos (marcas p /p)... el html es tocho de narices... varias decenas de megas... lo que interesa es mostrar un progreso (dentro de la ventana del navegador) que le indique al usuario cuánto se ha descargado ya, y que se vaya actualizando... cada párrafo tiene su id único.

Dicho de otra forma... imaginad que la página es el resultado de una consulta a una base de datos y se desea el listado entero...</description>
		<content:encoded><![CDATA[<p>Muy bueno, para imágenes&#8230;</p>
<p>Pero, y ¿para el propio HTML?</p>
<p>Pongo un ejemplo&#8230; en un html tenemos una lista muy muy larga de opciones (miles)&#8230; que tarda en ser cargada lo suyo&#8230;</p>
<p>Explicación: El código html se hace muy muy largo&#8230; y el /body no llega hasta pasados unos minutos (conexiones lentas) o un par de segundos (conexión fibra óptica a 100Mbt/s)</p>
<p>Otra posibilidad: el código html está siendo generado por php, lee de unos archivos y va entregando html poco a poco&#8230; como en procesar los archivos tarde algo&#8230; la carga del html se nota mucho&#8230;</p>
<p>Por ello, ¿cómo se pude poner una especie de barra de progreso para saber cúanto se ha cargado de la parte html? es decir (desde el body hasta el /body&#8230;</p>
<p>Bueno eso lo veo difícil o imposible&#8230; pero caray, lo que si se de antemano es la cantidad de elementos de la lista o el número de iteraciones de php en el bucle, con lo que en el head en un script de javascript si puedo saber cuántos &#8220;registros&#8221;, filas, capas, etc&#8230; va a tener la página&#8230;</p>
<p>Obviamente lo del onload del body no me sirve, porque salta cuando todo el html está cargado.</p>
<p>Explico esto: Una solución (mala porque no da el % de progreso) es colocar un gif animado que diga estoy cargando, espere&#8230; y en el onload ocultarlo, jeje, eso no permite indicarle al usuario por qué porcentaje de carga va el html.</p>
<p>Si uso un temporizador que altere el innerHTML de la capa para representar el %&#8230; la leche el navegador no actualiza la pantalla, si que salta el temporizador y éste si que que modifica el innerHTML, pero en pantalla no se ve el cambio.</p>
<p>Se me ocurre matar el problema a cañonazos, metiendo un iframe donde se muestre el progreso, pero me topo con otro problema&#8230; entre el body y el /body no está permitida la marca script (aunque los navegadores la interpreten bien)&#8230; así que tampoco me vale&#8230;</p>
<p>Nota: Ha de pasar el validador de XHTML 1.1 estricto y el de CSS 2.1 (obligación impuesta por los altos mandos, jeje)</p>
<p>Así que me veo con un problema muy gordo&#8230; que de momento no se reolver&#8230; o quizás si&#8230;</p>
<p>Solución: Matar a cañonazos&#8230; me explico:<br />
-Se que es una burrada hacerlo así, pero al menos debería funcionar, jeje<br />
-Se incrementa bastante el tamaño del html<br />
-Queda muy guarro el fuente html</p>
<p>Ahí va:<br />
-Tras cada iteración poner una capa encima de todas las anteriores, con el nuevo valor del %<br />
-En el onload del body ocultar todas las capas, si todas, porque cada una tapa a todas las anteriores.</p>
<p>Ejemplo:<br />
-Opción1<br />
-Capa1 con el % =1<br />
-Opción2<br />
-Capa2 con el % =2 que tape a la Capa 1<br />
&#8230;<br />
-OpciónN<br />
-CapaN con el % = N que tape a todas la Capa# anteriores<br />
-Opción100<br />
-Capa100 con el % = 100 que tape a todas la Capa# anteriores</p>
<p>Espero que la idea quede clara&#8230; ¿alguna alternativa a esta tremenda chapuza?</p>
<p>Encima para colmo algunos navegadores se niegan a mostrar nada hasta tener el 100% del html cargado, arrrgg!!! ¿cómo se soluciona esto sin usar frames ni iframes? aunque dudo que se pueda, quizás alguien sepa cómo.</p>
<p>De momento creo que la única solución pasa por usar un iframe con un timer que analice la existencia o no de ciertos &#8220;checkpoints&#8221; metidos de clavo en el html principal:</p>
<p>Por ejemplo si cada opción es una capa div con un id=&#8221;Opcion#&#8221; donde # va cambiando&#8230; en el timer se puede averiguar hasta cuál está cargado&#8230; intentanto acceder al id=&#8221;Opcion100&#8243; y si falla al id=&#8221;Opcion99&#8243;, etc&#8230; queda mucho más limpio&#8230; pero requiere bien de un frameset o de un iframe&#8230;</p>
<p>Total es una pesadilla querer hacer una especie de barra de progreso que muestre el % cargado de la parte html de la página.</p>
<p>Espero haber dejado claro que hablo de mostrar al usuario el % de carga de la página, la parte entre body y /body, no hablo para nada del porcentaje de carga de cada imágen&#8230; de hecho la página podría carecer totalmente de imágenes&#8230; lo que necesito es mostrarle al usuario cuántas opciones están cargadas (en porcentaje me basta) de una especie de lista y hacerlo mientras el código html viaja del servidor al navegador cliente.</p>
<p>Para dejarlo más claro aún&#8230; imaginad que la página html tiene miles y miles de párrafos (marcas p /p)&#8230; el html es tocho de narices&#8230; varias decenas de megas&#8230; lo que interesa es mostrar un progreso (dentro de la ventana del navegador) que le indique al usuario cuánto se ha descargado ya, y que se vaya actualizando&#8230; cada párrafo tiene su id único.</p>
<p>Dicho de otra forma&#8230; imaginad que la página es el resultado de una consulta a una base de datos y se desea el listado entero&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sancor seguros automotor</title>
		<link>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-11281</link>
		<author>sancor seguros automotor</author>
		<pubDate>Tue, 14 Jun 2011 06:54:54 +0000</pubDate>
		<guid>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-11281</guid>
		<description>quisiera ponerme en contacto, dejo mi email gracias</description>
		<content:encoded><![CDATA[<p>quisiera ponerme en contacto, dejo mi email gracias</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Raul</title>
		<link>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-9097</link>
		<author>Raul</author>
		<pubDate>Tue, 21 Sep 2010 16:22:29 +0000</pubDate>
		<guid>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-9097</guid>
		<description>Excelente tu aporte Daniel, era justo lo que estaba buscando mil gracias.

aldhebaran  prueba con window.location a mi me funciona sin problemas

Edu a mi no me causo problemas, estas seguro que esos div si los pusiste en tu pagina de diseño, eso es lo unico que se me ocurre que pueda fallar

Saludos a todos</description>
		<content:encoded><![CDATA[<p>Excelente tu aporte Daniel, era justo lo que estaba buscando mil gracias.</p>
<p>aldhebaran  prueba con window.location a mi me funciona sin problemas</p>
<p>Edu a mi no me causo problemas, estas seguro que esos div si los pusiste en tu pagina de diseño, eso es lo unico que se me ocurre que pueda fallar</p>
<p>Saludos a todos</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Edu</title>
		<link>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-8502</link>
		<author>Edu</author>
		<pubDate>Fri, 18 Jun 2010 08:06:20 +0000</pubDate>
		<guid>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-8502</guid>
		<description>Hola,

tengo un problema, intentando poner tu barra de progreso en una aplicación ASP.NET no funciona, las instrucciónes:

divCompletado=document.getElementById("barraCompletado");
divPorcentaje=document.getElementById("barraPorcentaje");
divLeyenda=document.getElementById("leyenda");

devulven siempre null.

Alguna idea?</description>
		<content:encoded><![CDATA[<p>Hola,</p>
<p>tengo un problema, intentando poner tu barra de progreso en una aplicación ASP.NET no funciona, las instrucciónes:</p>
<p>divCompletado=document.getElementById(&#8221;barraCompletado&#8221;);<br />
divPorcentaje=document.getElementById(&#8221;barraPorcentaje&#8221;);<br />
divLeyenda=document.getElementById(&#8221;leyenda&#8221;);</p>
<p>devulven siempre null.</p>
<p>Alguna idea?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Leonardo Cardoso</title>
		<link>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-4075</link>
		<author>Leonardo Cardoso</author>
		<pubDate>Tue, 19 May 2009 16:54:19 +0000</pubDate>
		<guid>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-4075</guid>
		<description>Soy Brasileño,

Muy bueno la dica, mas teria la possibilidad de carga imagenes indepediente? uno preload en cada imagenes?</description>
		<content:encoded><![CDATA[<p>Soy Brasileño,</p>
<p>Muy bueno la dica, mas teria la possibilidad de carga imagenes indepediente? uno preload en cada imagenes?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: aldhebaran</title>
		<link>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-2426</link>
		<author>aldhebaran</author>
		<pubDate>Fri, 31 Oct 2008 14:49:52 +0000</pubDate>
		<guid>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-2426</guid>
		<description>Pana, desde venezuela:
el "location.href" funciona solo con "IE".
Como redirecciono la página, una vez hecha la carga de imagenes, en "firefox", "opera" o "safari"???
Gracias</description>
		<content:encoded><![CDATA[<p>Pana, desde venezuela:<br />
el &#8220;location.href&#8221; funciona solo con &#8220;IE&#8221;.<br />
Como redirecciono la página, una vez hecha la carga de imagenes, en &#8220;firefox&#8221;, &#8220;opera&#8221; o &#8220;safari&#8221;???<br />
Gracias</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel</title>
		<link>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-2378</link>
		<author>Daniel</author>
		<pubDate>Fri, 24 Oct 2008 07:10:36 +0000</pubDate>
		<guid>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-2378</guid>
		<description>Hola, gracias por el comentario. Para hacer lo que dices sencillamente se cambiaría el alert por un location.href y listo.

Perdon por la demora en la respuesta.
Saludos.</description>
		<content:encoded><![CDATA[<p>Hola, gracias por el comentario. Para hacer lo que dices sencillamente se cambiaría el alert por un location.href y listo.</p>
<p>Perdon por la demora en la respuesta.<br />
Saludos.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sebastian</title>
		<link>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-2262</link>
		<author>Sebastian</author>
		<pubDate>Wed, 10 Sep 2008 21:08:44 +0000</pubDate>
		<guid>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-2262</guid>
		<description>Hola, muy bien explicado! Solo me resta una duda. Como hago si quiero que al finalizar la carga de las imagenes me redirija a una determinada pagina? (en vez de mostrarme el alert de (carga completa)

Muchas gracias</description>
		<content:encoded><![CDATA[<p>Hola, muy bien explicado! Solo me resta una duda. Como hago si quiero que al finalizar la carga de las imagenes me redirija a una determinada pagina? (en vez de mostrarme el alert de (carga completa)</p>
<p>Muchas gracias</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel</title>
		<link>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-956</link>
		<author>Daniel</author>
		<pubDate>Sun, 10 Feb 2008 01:51:32 +0000</pubDate>
		<guid>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-956</guid>
		<description>Me alegra que haya servido.

Saludos.</description>
		<content:encoded><![CDATA[<p>Me alegra que haya servido.</p>
<p>Saludos.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ayacuchonet</title>
		<link>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-955</link>
		<author>Ayacuchonet</author>
		<pubDate>Sun, 10 Feb 2008 00:36:39 +0000</pubDate>
		<guid>http://www.formatoweb.com.ar/blog/2007/10/06/barra-de-progreso-en-javascript-para-monitorear-la-carga-de-imagenes/#comment-955</guid>
		<description>Muy bueno el truquito me servio gracias
http://ayacuchonet.tk</description>
		<content:encoded><![CDATA[<p>Muy bueno el truquito me servio gracias<br />
<a href="http://ayacuchonet.tk" rel="nofollow">http://ayacuchonet.tk</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>

