Situación popup

Hola Bruckner, gracias por la respuesta del otro día, he conseguido que me funcione situar un popup respecto a otro en explorer y netscape v4.por, pero
únicamente no me funciona en netscape v6.
Uso los métodos que me dijiste, para explorer self. ScreenLeft y para netscape self.screenX, pero en netscape 6 no me funciona, ¿sabrías por qué?
Gracias de antemano.

1 Respuesta

Respuesta
1
La respuesta a tu pregunta es que en el código que te di no se hace una detección específica de Netscape 6, y eso es debido, fundamentalmente, a que todavía no está muy extendido. Aquí tienes el código que cubre todos los casos:
function posicionar(w) {
var posX=document.layers?self.screenX:(document.all?self.screenLeft:self.screenX);
var posY=document.layers?self.screenY:(document.all?self.screenTop:self.screenY);
w.moveTo(posX,posY);
}
Te explico el fundamento de la cuestión: la detección de navegador se hace en las dos primeras líneas de la función. Éstas son una forma abreviada de if... else, muy útil cuando lo único que se quiere hacer es asignar una variable. La sintaxis de este "operador ternario" (así se le llama) es:
condicion?valor_true:valor_false
Es decir, si condición es true, devuelve valor_true, y valor_false si no. La línea de código:
a=(x==0)?1:2;
Es equivalente a...
if (x==0) a=1;
else a=2;
Combinando el operador ternario con la detección de objetos (cualquier objeto evaluado como condición devuelve true si existe, y false si no) podemos detectar los navegadores. Observa que se usan dos operadores ternarios encadenados. Primero se detecta si existe document. Layers (y el cliente sería NS4); si no existe, se mira document. All (y el cliente sería entonces un Explorer). El caso restante es el que toma NS6, porque en él no existe ni document. Layers ni document. All (ambos son objetos propietarios y no siguen el estándar del DOM W3C).
Naturalmente, en cada caso se asigna el valor válido para cada navegador, es decir, screenX para los Netscape y screenLeft para Explorer.
Netscape 6 (o mejor Mozilla, su base Open Source) es lo mejor que ha pasado en el mundo de los clientes web en mucho tiempo, y permite hacer muchas cosas que funcionan también en Explorer 5 y superiores sin bifurcar el código en varias ramas, como se ha hecho hasta ahora. Desgraciadamente éste no es un buen ejemplo... Pero créeme, cuando Netscape 4 y Explorer 4 no sean más que un recuerdo, tendremos un trabajo mucho más fácil.
No dudes en volverme a preguntar si sigues teniendo problemas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas