Situar un popup

Tengo una función simple que me abre un popup, y desde este popup quiero abrir un segundo popup, posicionándose respecto el primer popup.
Ej. El primer popup se abre centrado respecto al monitor, el segundo quiero que se abra en el extremo superior izquierdo del primer popup, pero teniendo en cuenta que el primer popup, lo puedo haber movido previamente.
No se si me he explicado bien, si puedes entenderme, me ayudarías mucho.

1 respuesta

Respuesta
1
Tu problema no debería ser muy complejo, pero desgraciadamente las incompatibilidades del DOM (Document Object Model) de los dos navegadores más usados lo hacen...
En Netscape 4.x, puedes acceder a la posición (x, y) de la esquina superior izquierda de cualquier ventana utilizando las propiedades screenX y screenY del objeto window, y la anchura y la altura mediante outerWidth y outerHeight (también propiedades del objeto window).
En Explorer la posición (x, y) de la esquina superior izquierda de la ventana la dan window. screenLeft y window. ScreenTop, respectivamente, y no hay modo de averiguar la anchura o la altura reales de la ventana: tan sólo los de la página visible (lo que no sirve de mucho, porque los bordes pueden cambiar de tamaño, y puede haber un número variable de botones y barras en la parte superior...)
Los métodos para mover una ventana (lo que quieres implica abrir la ventana con window. Open(), averiguar la localización de la ventana que la ha abierto con las propiedades anteriores, y mover la ventana recién abierta) son window.moveBy(x, y) y window.moveTo(x, y), en ambos navegadores. El primero acepta incrementos, y el segundo posiciones absolutas (seguramente será éste el que uses).
Para posicionar un popup sobre el extremo superior izquierdo de otra ventana, puedes introducir esta función en un SCRIPT en el HEAD del código de esa "otra ventana":
function posicionar(w) {
var posX=document.layers?self.screenX:self.screenLeft;
var posY=document.layers?self.screenY:self.screenTop;
w.moveTo(posX,posY);
}
Una vez abierta una ventana con window.open:
var nuevaVentana=window.open(...);
...la puedes posicionar con una llamada a la función anterior:
posicionar(nuevaVentana);
Naturalmente, desde la ventana que la abre, que actúa como referencia. El método funciona independientemente de que la ventana de referencia se haya movido. Si no quieres poner la ventana nueva de forma que coincidan sus esquinas superiores izquierdas (es lo que te he entendido) habría que cambiar un poco la función posicionar(), pero siempre recordando que si quieres colocar una ventana respecto de los bordes derecho o inferior de otra (para lo que necesitarías saber, además de la posición de la esquina superior izquierda, su anchura y altura efectivas), Explorer no te lo pone fácil y tendrías que hacerlo "a mano": sabiendo con qué tamaño has abierto la ventana de referencia, y marcándola en apertura como "resizable=no" en el tercer parámetro del window. Open() que la abra.
Espero haberte podido aclarar un poco las cosas. No dudes en preguntarme de nuevo si tienes algún problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas