Foros del Web » Programando para Internet » Javascript » Frameworks JS »

function onLoad

Estas en el tema de function onLoad en el foro de Frameworks JS en Foros del Web. Tego una function con una condición y quiero que en una de las coniciones compruebe que antes se ha cargado todo el codigo de la ...
  #1 (permalink)  
Antiguo 28/03/2007, 07:11
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 21 años, 5 meses
Puntos: 2
function onLoad

Tego una function con una condición y quiero que en una de las coniciones compruebe que antes se ha cargado todo el codigo de la página, algo asi:

Código HTML:
<html>
<head>
<script type="text/javascript" language="javascript">

function onLoad()
{
      if(condicion)
      {
            codigo
      }
       else if(onLoad)
      {
           aqui tendria que ejecutarse este codigo si se antes se ha cargado toda la pagina
       }
        else
       {
            codigo
        }
}

</script>
</head> 

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #2 (permalink)  
Antiguo 28/03/2007, 09:13
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: function onLoad

Bueno bichomen, si que eres un bicho bien raro pues no eres muy especifico que digamos... pero si entendi bien quieres saber si se ha cargado o no la pagina que estas viendo??? si es asi entonces lo que necesitas es ajax de lo contrario no se a que te refieres
__________________
Suerte.
_______________________________
"La vida es el principio de la muerte".
  #3 (permalink)  
Antiguo 29/03/2007, 01:20
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 21 años, 5 meses
Puntos: 2
Re: function onLoad

Creo q e sido bastante claro, estoy buscando una funcion que me compruebe si se ha cargado la página y si a sido asi ejecute unas sentencias

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #4 (permalink)  
Antiguo 29/03/2007, 01:45
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 9 meses
Puntos: 772
Re: function onLoad

Hola bichomen

El evento onload se dispara cuando ha terminado de cargarse la página, así que no es necesario que compruebes nada, porque si no se ha cargado no llegará a ejecutarse la función. Un ejemplo:

Código:
<script type="text/javascript">
function ini() {
  alert('Página cargada');
}
</script>
</head>
<body onload="ini()">
Saludos,
  #5 (permalink)  
Antiguo 29/03/2007, 02:00
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 21 años, 5 meses
Puntos: 2
Re: function onLoad

Es mas complicado de lo que parece, pq esta funcion la llamo desde otra pagina y solo tiene que ejecutar un if else si se ha cargado la página, pq necesito cargar antes unos includes que tengo, pq de otra manera no me los reconoce, osea la funcion se ha de cargar al inicio pero si la peticion q se le envia desde otra página es una determinada entonces tiene que cargar primero toda la página y luego ejecutar la función para acceder al codigo de los includes, e de decir q estoy utilizando ajax para la carga de páginas

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #6 (permalink)  
Antiguo 29/03/2007, 05:06
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 9 meses
Puntos: 772
Re: function onLoad

Cita:
Iniciado por bichomen Ver Mensaje
Es mas complicado de lo que parece, pqporque esta funcion la llamo desde otra pagina y solo tiene que ejecutar un if else si se ha cargado la página, pqporque necesito cargar antes unos includes que tengo, pqporque de otra manera no me los reconoce, osea la funcion se ha de cargar al inicio pero si la peticion qque se le envia desde otra página es una determinada entonces tiene que cargar primero toda la página y luego ejecutar la función para acceder al codigo de los includes, ehe de decir qque estoy utilizando ajax para la carga de páginas

bichomen
Mejoremos la ortografía

Si hubieras mencionado que estás usando AJAX, habríamos movido el mensaje a ese foro para que te orientaran. El Patrón te indicó que necesitarías AJAX, pero tú te limitastes a contestar: "Creo q e sido bastante claro"

Mensaje movido al foro de AJAX desde JavaScript.

Saludos,
  #7 (permalink)  
Antiguo 29/03/2007, 06:12
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 21 años, 5 meses
Puntos: 2
Re: function onLoad

Haber voy a intentar exponer el problema con todos los datos posibles, aunque ya tengo por los foros un par de temas preguntando mas o menos lo mismo, pero es que necesito solucionarlo.

Estoy utilizando ajax, para la carga de páginas, utilzo esta función en ajax.js:

Código HTML:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Cargar diferentes includes en una página:

var http_request = false;

function makeRequest(url)
{
	http_request = false;

	if (window.XMLHttpRequest) 
	{ // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) 
		{
			http_request.overrideMimeType("text/xml");
			// Ver nota sobre esta linea al final
		}
	}	
	else if (window.ActiveXObject) 
	{ // IE
		try 
			{
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} 
		catch (e) 
		{
			try 
			{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) 
			{
			}
		}
	}

	if (!http_request) 
	{
		alert("ERROR :( No es posible crear una instancia XMLHTTP");
		return false;
	}
	http_request.onreadystatechange = alertContents;
	http_request.open("GET", url, true);
	http_request.send(null);

}

function alertContents() 
{

	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{
			alert(http_request.responseText);
		} 
		else 
		{
			alert("Hubo problemas con la petición.");
		}
	}

}

function XHConn()
{
	var xmlhttp, bComplete = false;
	try 
	{ 
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch (e) 
	{ 
		try 
		{ 
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
		}
		catch (e) 
		{ 
			try 
			{ 
				xmlhttp = new XMLHttpRequest(); 
			}
			catch (e) 
			{ 
				xmlhttp = false; 
			}
		}
	}
	if (!xmlhttp) return null;
	this.connect = function(sURL, sMethod, sVars, fnDone)
	{
		if (!xmlhttp) return false;
		bComplete = false;
		sMethod = sMethod.toUpperCase();
			
		try 
		{
			if (sMethod == "GET")
			{
				xmlhttp.open(sMethod, sURL+"?"+sVars, true);
				sVars = "";
			}
			else
			{
				xmlhttp.open(sMethod, sURL, true);
				xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
				xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			}
				
			xmlhttp.onreadystatechange = function()
			{
				if (xmlhttp.readyState == 4 && !bComplete)
				{
					bComplete = true;
					fnDone(xmlhttp);
				}
			};
					
			xmlhttp.send(sVars);
		}
		catch(z) 
		{	
			return false; 
		}
		return true;
	};
	return this;
}

function cargar_contenido(target, url) 
{ 
	document.getElementById(target).innerHTML = "<p>Cargando...</p>"; 
	var myConn = new XHConn(); 
	if (!myConn) alert("XMLHTTP no esta disponible. Inténtalo con un navegador más actual."); 
	var peticion = function (oXML) 
	{ 
		document.getElementById(target).innerHTML = oXML.responseText; 
	}; 
	myConn.connect(url, "GET", "", peticion); 
}

con esto consigo cargar varios includes en varios divs en el index.php

El menu con los enlaces, estan dentro de un include tambien y los enlaces son tal que asi:

Código HTML:
<a href="javascript:cargar('rutadelinclude,'id');">enlace 1</a> 
rutadelinclude es la ruta del include a cargar
id es el identificador del enlace para luego cargar diferentes includes en el index, dependiendo del enlace dado

Código HTML:
<script type="text/javascript" language="javascript">

var v,p;

function cargar(ruta,id)
{
cargar_contenido("foto", "includes/foto.php?f=" + id); //Foto arriba a la izquierda
	cargar_contenido("fotos", "includes/fotos.php?f=" + id); //Fotos arriba a la derecha
	cargar_contenido("titulo", "includes/titulos.php?valor=" + id); //Titulo del marco

//Aqui cargo diferentes includes, dependiendo de la ruta y del indetificador
///Ahora viene el meoyo de la cuestion

switch (id) 
	{ 
		case "11": //FORO
			cargar_contenido("banners", "includes/banners.php?b=" + id); //banners
			cargar_contenido("mayor9", ruta); //Tabla inferior derecha
			v = true;
			break 
		case "21": //Pesión Andreva
			cargar_contenido("m", ruta); //Tabla inferior
			p = true;
			break 
        default: 
			if(v)
			{
				//cargar_contenido("m", "includes/enlacemayor.php"); //Tabla inferior
				cargar_contenido("banners", "includes/banners.php?b=" + id); //banners				
				cargar_contenido("mayor9", "includes/enlace.php"); //Tabla inferior derecha

cargar_contenido("anuncios", "includes/anuncios.php?a=id"); //Anuncios
					cargar_contenido("detalles", ruta); //Páginas
								
			}	
			else
			{
				cargar_contenido("banners", "includes/banners.php?b=" + id); //banners
				cargar_contenido("anuncios", "includes/anuncios.php?a=" + id); //Anuncios
				cargar_contenido("detalles", ruta); //Páginas
			}
    } 
}
</script> 
ACLARACION:

tengo tres divs banners, anuncios, detalles

en detalles cargo los enlaces, excepto en 2 que los cargo en un div "mayor9" que abarca los divs anuncios y detalles y un tercero "m" que abarca los tres divs(banners, anuncios, detalles), esto lo hago poque estos dos enlaces quiero que se cargen ocupando un mayor tamaño que el div detalles, como el innerHTML se come lo que hay en los divs, si llamo al div "m" y cargo el codigo de un enlace cuando quiera dar a otros enlaces y que se me cargen en el div "detalles" me dada error ya que no existe el div detalles, asi que lo que hice fue meter el codigo del los div "anuncios" y "detalles" en un include(enlace.php) y el codigo del div "banners" y "mayor9" en otro include(enlacemayor).php, luego con la funcion cargar comprobar cuando se da a un enlace u a otro y dependiendo del cual se da carga uno includes u otros, el problema es que cuando se carga la página por defecto muestra todos los divs correctamente, asi que se puede acceder a ellos pero cuando cargo en el div "mayor9" el include me lo carga bien, pero si intento cargar a continuacion otros enlaces en detalle no funciona al menos en firefox, en el explorer, la primera vez me muestra el include por defecto y si vuelvo a darle al enlace me lo muestra bien, pero el firefox solo muestra el que es por defecto, yo creo que el problema esta aqui:

Código HTML:
if(v)
			{
//cargar_contenido("m", "includes/enlacemayor.php"); //Tabla inferior
				cargar_contenido("banners", "includes/banners.php?b=" + id); //banners
cargar_contenido("mayor9", "includes/enlace.php"); //Tabla inferior derecha
cargar_contenido("anuncios", "includes/anuncios.php?a=id"); //Anuncios
					cargar_contenido("detalles", ruta); //Páginas
}
como cuando enlace.php este llama a otro include, cuando el navegador intenta cargar los divs "anuncios" y "detalles", no los ve de entrada y ya no los carga.

Por eso e intentado varias cosas, por ejemplo que el navegador lea primero todo el codigo y luego cargue el includes en los divs "anuncios" y "detalles"

o si alguien se le ocurre como hago para que el ajax me procese el codigo, siento haberme extendido tanto, pero espero haber dejado bien claro la problematica que tengo, gracias de antemano

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #8 (permalink)  
Antiguo 29/03/2007, 09:53
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: function onLoad

Hola

Bueno, pues estoy probandolo en firefox y me da problemas con la variable target que usas en el ajax.js pues me dice esto

document.getElementById(target) has no properties y ya le puse comillas y eso pero sigue con lo mismo.

mira eso a ver si te da solución en firefox.
__________________
Suerte.
_______________________________
"La vida es el principio de la muerte".
  #9 (permalink)  
Antiguo 30/03/2007, 03:33
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 21 años, 5 meses
Puntos: 2
Re: function onLoad

Justamente ese es el error que me devuelve a mi tambien firefox

Código:
document.getElementById(target) has no properties
probe lo de las comillas pero no, ademas, no son necesarias ya que target es una variable que apunta al texto que ya esta entre comillas, sigo pensando que es un problema de recarga del codigo.

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #10 (permalink)  
Antiguo 01/04/2007, 09:03
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Re: function onLoad

loading........


prueba poniendo:

Código PHP:
var target=target;
var 
peticion = function (oXML
    { 
        
document.getElementById(target).innerHTML oXML.responseText
    }; 

connection closed.
__________________

Maborak Technologies
  #11 (permalink)  
Antiguo 02/04/2007, 05:58
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 21 años, 5 meses
Puntos: 2
Re: function onLoad

Que va, no funciona, devuelve el mismo error

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332

Última edición por bichomen; 02/04/2007 a las 06:16
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:09.