Código PHP:
<div id="ventana">
<div id="fondo"></div>
<div id="contenido>
</div>
</div>
| ||||
Respuesta: Sencillo pero raro, redefinir ancho y alto ¿los valores de ancho y alto estan definidos en un stylesheet? bien, si es el caso, leer las dimensiones a traves del objeto style del elemento, siempre te devolvera un valor vacio. la razon es que el objeto style no es otra cosa mas que el atributo style de los elementos. si el elemento no tiene definido el atributo, todos los valores que intentes recoger por el objeto style seran devuelto vacios. para ello, puedes usar otra propiedad que devuelve las dimensiones del elemento: offsetWidth y offsetHeight. fijate que son propiedades del elemento, no del objeto style.
__________________ la maldad es una virtud humana, y la espiritualidad es la lucha del hombre contra su maldad. |
| ||||
Respuesta: Sencillo pero raro, redefinir ancho y alto Cita: Efectivamente los valores de ancho alto se pretendían alterar mediante objeto.style.height/widht respectivamente, claro que para que se adaptara el div al contenido cargado desde el .php directamente en la creación del objeto no definí ningún height ni width que pudiera limitar esa "adaptabilidad".
Iniciado por zerokilled ![]() ¿los valores de ancho y alto estan definidos en un stylesheet? bien, si es el caso, leer las dimensiones a traves del objeto style del elemento, siempre te devolvera un valor vacio. la razon es que el objeto style no es otra cosa mas que el atributo style de los elementos. si el elemento no tiene definido el atributo, todos los valores que intentes recoger por el objeto style seran devuelto vacios. para ello, puedes usar otra propiedad que devuelve las dimensiones del elemento: offsetWidth y offsetHeight. fijate que son propiedades del elemento, no del objeto style. Parece por tanto que la única opción que me queda es la que comentas de usar offsetWidth y offsetHeight, pero me surge otro problema, cree esta función:
Código:
Y luego hice una llamada a la misma dentro de la función que crea la ventana, pero justo después de que esta fuera rellenada y colocada en el html. Extrañamente devuelve los valores incorrectos, como si no le hubiera dado tiempo a rellenar el <div> con el contenido de .php, ya que si llamo a la función desde un enlace cargado a la vez que el formulario si responde bien ¿sugerencias? ¿un wait o algo antes de la llamada u alguna forma mas exacta de saber si el div se ha rellenado bien antes de mirar su ancho y alto? function recolocar_ventana() { var ventana = document.getElementById("contenido"); var anchofinal = ventana.offsetWidth; var altofinal = ventana.offsetHeight; alert("Anchofinal: "+anchofinal+", Altofinal: "+altofinal); ventana.style.marginLeft = "-"+ (anchofinal/2) + "px"; ventana.style.marginTop = "-" + (altofinal/2) + "px"; }
__________________ Cita: "El camino empieza renunciando al control, y volviéndose flexibles." |
| ||||
Respuesta: Sencillo pero raro, redefinir ancho y alto ¿como estas rellenando el DIV? ¿con ajax? si es asi, ¿en que momento invocas la funcion que crea la ventana?
__________________ la maldad es una virtud humana, y la espiritualidad es la lucha del hombre contra su maldad. |
| ||||
Respuesta: Sencillo pero raro, redefinir ancho y alto Cita: Código PHP:
__________________ Cita: "El camino empieza renunciando al control, y volviéndose flexibles." Última edición por caneva; 17/11/2009 a las 21:08 |
| ||||
Respuesta: Sencillo pero raro, redefinir ancho y alto intentalo asi. la siguiente porcion corresponde al evento onreadystatechange.
Código:
si aun asi te da problema, la ultima solucion que se me ocurre (y que a mi juicio es un tanto puerco), invocas la funcion programandola con un tiempo. o sea, setTimeout.hijosecundario.innerHTML = this.responseText; //hijosecundario es el objeto DOM que contendrá lo que se cargue en la petición ajax recolocar_ventana(); //Reposicionamos la "ventana" }
Código:
setTimeout(recolocar_ventana, 250); // se ejecuta luego de 250ms;
__________________ la maldad es una virtud humana, y la espiritualidad es la lucha del hombre contra su maldad. |
| ||||
Respuesta: Sencillo pero raro, redefinir ancho y alto Cita: Colocandola ahí funciona al contrario, es decir en FF y Chrome pero no en IE ¿acaso manejan de forma distinta los eventos de ajax? de todas formas no le veo el sentido, porque si ahí aun no han colocado el contenido ¿cómo es que ya saben FF y Chrome el valor del ancho y alto?
Iniciado por zerokilled ![]() intentalo asi. la siguiente porcion corresponde al evento onreadystatechange.
Código:
si aun asi te da problema, la ultima solucion que se me ocurre (y que a mi juicio es un tanto puerco), invocas la funcion programandola con un tiempo. o sea, setTimeout.hijosecundario.innerHTML = this.responseText; //hijosecundario es el objeto DOM que contendrá lo que se cargue en la petición ajax recolocar_ventana(); //Reposicionamos la "ventana" }
Código:
setTimeout(recolocar_ventana, 250); // se ejecuta luego de 250ms; Si, la solución del timer funciona, pero como a ti no me gusta, debe haber otra menos "chapuza" :S
__________________ Cita: "El camino empieza renunciando al control, y volviéndose flexibles." |
| ||||
Respuesta: Sencillo pero raro, redefinir ancho y alto ![]()
__________________ la maldad es una virtud humana, y la espiritualidad es la lucha del hombre contra su maldad. |