Foros del Web » Programando para Internet » Javascript »

Problema detectando el alto

Estas en el tema de Problema detectando el alto en el foro de Javascript en Foros del Web. Veamos, tengo una página en la que quiero que una capa, ocupe tanto el ancho y alto visible del navegador. Para ello, creo una capa, ...
  #1 (permalink)  
Antiguo 09/07/2009, 06:39
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 6 meses
Puntos: 11
Problema detectando el alto

Veamos, tengo una página en la que quiero que una capa, ocupe tanto el ancho y alto visible del navegador. Para ello, creo una capa, sin asignarle nada, para que posteriormente una vez cargada la página le asigne las posiciones y dimensiones. Pero, no lo hace correctamente. Tengo este codigo:

Index.php
Código PHP:
<?php header("Cache-Control:no-cache,must-revalidate"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<?php
error_reporting
(E_ALL);
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<link rel="stylesheet" type="text/css" href="style.css">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Pagina</title>
</head>
<noscript><center><strong>La página no se visualizará.</strong> No tienes activado JavaScript. Para ver correctamente la página debes de activarlo. Disculpen las molestias.</center></noscript>
<script language="JavaScript" src="scripts/script.php"></script>

<body scroll="no" style="margin: 0;">
<div id="BackGround" style="background-color: #FF0000;" class="CBackground"></div>
<script type="text/javascript">
window.onload = LoadIni();
</script>
Y el archivo script.jp que contiene el código javacript.

Código:
function LoadIni() {
	LanzVars();
	alert(DocHeight);
	MountLayer(0, 0, DocWidth, DocHeight, 'BackGround');
}
function LanzVars() {
	DocHeight = 0; DocWidth = 0;
	if (window.innerHeight) { 
		DocHeight = window.innerHeight;
	}else{
		if (document.body.clientHeight) { DocHeight = document.body.clientHeight; }
	}
	if (window.innerWidth) { 
		DocWidth = window.innerWidth;
	}else{
		if (document.body.clientWidth) { DocWidth = document.body.clientWidth; }
	}
} 
function MountLayer(PosLeft, PosTop, TWidth, THeight, Layer) {
	ObjDiv = document.getElementById(Layer);
	ObjDiv.style.visibility = "visible";	
	ObjDiv.style.position = "absolute";
	ObjDiv.style.left 	 = PosLeft;
	ObjDiv.style.top 	 = PosTop;
	ObjDiv.style.width	 = TWidth;
	ObjDiv.style.height	 = THeight;
	ObjDiv.style.backgroundColor = "red";
}
Alguien sabe decirme que estoy haciendo mal?

Saludos, y gracias de antemano.
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #2 (permalink)  
Antiguo 09/07/2009, 07:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
Respuesta: Problema detectando el alto

Window size and scrolling

Código js:
Ver original
  1. function alertSize() {
  2.   var myWidth = 0, myHeight = 0;
  3.   if( typeof( window.innerWidth ) == 'number' ) {
  4.     //Non-IE
  5.     myWidth = window.innerWidth;
  6.     myHeight = window.innerHeight;
  7.   } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
  8.     //IE 6+ in 'standards compliant mode'
  9.     myWidth = document.documentElement.clientWidth;
  10.     myHeight = document.documentElement.clientHeight;
  11.   } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
  12.     //IE 4 compatible
  13.     myWidth = document.body.clientWidth;
  14.     myHeight = document.body.clientHeight;
  15.   }
  16.   window.alert( 'Width = ' + myWidth );
  17.   window.alert( 'Height = ' + myHeight );
  18. }

Esto funciona tanto en IE como FF luego mira que puedes adaptar....


Una buena referencia .... el problema que tienes lo esta generando creo las diferencias entre navegadores...

Quim
  #3 (permalink)  
Antiguo 09/07/2009, 08:51
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 6 meses
Puntos: 11
Respuesta: Problema detectando el alto

Vale, muchisimas gracias, ahora hace exactamente lo que deberia de hacer, pero ahora en internet explorer me da el siguiente error en la linea 14:

No Implementado.

Y luego en firefox tambien me da 2 errores, y no me pinta el fondo de la capa de color rojo como en internet explorer. Y los dos errores son los siguientes:


Error al leer el valor para la propiedad 'width'. Declaración rechazada.
(Aqui la direccion del archivo)
Error al leer el valor para la propiedad 'height'. Declaración rechazada.
(Aqui la direccion del archivo)


Asi, tal cual me lo pone la consola de errores del firefox.

El archivo script.js lo deje asi al final:

Código:
function LoadIni() {
	LanzVars();
	MountLayer(0, 0, DocWidth, DocHeight, 'BackGround');
}
function LanzVars() {
	DocHeight = 0; DocWidth = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//No-IE
		DocWidth = window.innerWidth;
		DocHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ en modos standar
		DocWidth = document.documentElement.clientWidth;
		DocHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		DocWidth = document.body.clientWidth;
		DocHeight = document.body.clientHeight;
	}
} 
function MountLayer(PosLeft, PosTop, TWidth, THeight, Layer) {
	ObjDiv = document.getElementById(Layer);
	ObjDiv.style.visibility = "visible";	
	ObjDiv.style.position	= "absolute";
	ObjDiv.style.left 		= PosLeft;
	ObjDiv.style.top 		= PosTop;
	ObjDiv.style.width		= TWidth;
	ObjDiv.style.height		= THeight;
	ObjDiv.style.backgroundColor = "red";
}
Así que que deberia de hacer para que no me salieran errores y en firefox me pinte el fondo de la capa de rojo como he puesto?
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #4 (permalink)  
Antiguo 09/07/2009, 10:19
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 6 meses
Puntos: 11
Respuesta: Problema detectando el alto

Solucionado, el javascript del final, tengo que ponerlo sin parentesis:

<script type="text/javascript">
window.onload = LoadIni;
</script>


Saludos.
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
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 10:00.