Detectar si está abierto el Window.Opener
2 seguidores
Güenas ... tengo un problemilla, vereis, tengo una ventana que abre a otra, y esta segunda tiene un enlace con la primera. Pues lo que quiero hacer es que, al pulsar el enlace de la segunda, si la primera todavía está abierta simplemente le devuelve el foco, y si está cerrada pues la abre de nuevo.
(no sé si me he explicado bien).
El código es este:
<ul>function Madre(){
// Si la ventana madre esta cerrada la volvemos a abrir
if ( window.opener.closed ) {
window.open('http://www.xxx.com');
// Y si esta abierta le pasamos el foco
} else {
window.opener.focus();
}
}</ul>
Pero no me rula en Mozilla ¿sabeis si es posible solucionarlo para todos los navegadores?
Thnks!!!
Josh
No lo he probado pero puede ser que te funcione lo siguiente:
<code>
function Madre(){
if (!opener)
open('http://www.xxx.com')
else
opener.focus()
}
</code>
Lo que creo es que si opener esta cerrada, Mozilla no puede acceder a la propiedad closed (tonces pa que vale???? :? ).
orange
Claro, es el problema, IE si que encuentra la propiedad, pero el debugger de Javascript de Mozilla me dice que esta undefined y da un error.
A ver si alguien se ha encontrado con el problema antes.
microbians Staff
comprueba con
window.opener y window.opener.closed
Es decir primero comprueba la existencia del opener y luego su esta o no closed
orange
window.opener asi a pelo no me rulaba ni en IE, y todo parecía listo con window.opener.closed (que es lo que está puesto en el script de ejemplo) y no me funciona en Mozilla.
¿No habrá otra alternativa?
microbians Staff
he probado esto y me funciona...
madre.html
<code><html>
<head>
<script>
var hijo=null
abretesesamo=function(){
hijo=window.open("hijo.html","nuevawin","width=400,height=400")
hijo.opener=window.self
}
</script>
</head>
<body onload="abretesesamo()">VENTANA MADRE</body>
</html></code>
hijo.html
<code><html>
<head>
<script>
var madre=window.opener
checkwindow=function(){
if( madre && !madre.closed) {
madre.focus()
} else {
madre=window.open("madre.html","_blank","")
self.opener=madre
}
}
</script>
</head>
<body><a href="#" onclick="checkwindow();return false">¿EXISTE LA VENTANA MADRE?</a></body>
</html></code>
orange
Guay me funciona ...
La clave está aqui if( madre && !madre.closed) .... ahora te pillo, cuando me decías que comprobase window.opener Y window.opener.closed te referías a que lo hiciese a la vez, no a que probase con esso parámetros por separado.
JEJEJE
Eres un crack Gabi!!!
Muchas cenkius!!!!
microbians Staff
Si la cuestion es que sea un if anidado o una secuencia de &&
porque el javascript cuando pones && comprueba el primero y si se cumple entonces lo hace con el segundo, no lo parsea todo a la vez.