Jeje, estimados amigos, siempre traigo alguna cosa rara.
El asunto es el siguiente.
Tengo una pantalla con un ef popup. Cuando despliego este popup me muestra un cuadro pero con la salvedad de que tiene un filtro (para poder achicar las opciones), este filtro, a su vez tiene un popup.
Cuando despliego este segundo popup, no me abre otra ventana, sino que lo hace en la misma (abierta con el primer popup), por lo tanto, cuando selecciono algo, no hace nada. Queda allí.
O sea, los popups anidados no funcionan correctamente, al menos de la forma en que lo estoy haciendo.
¿Hay alguna manera de hacerlos funcionar?
Supongo que debe ser por la zona de memoria que está usando, pero no se me ocurre como resolverlo.
Llamo la atención nuevamente sobre este caso.
Estoy usando el Toba 2.2.0, y le sucede lo mismo.
Cuando uso un popup, que a su vez tiene incluido un filtro con otro popup, no funciona correctamente.
Abre el segundo popup en la misma ventana donde abrió el primero y el programa se pierde.
te hago una consulta, los items de destinto de ambos popups… son distintos?.. son el mismo?, como esta configurada la celda de memoria para cada uno de los popups?.
El js que abre las ventanas en la version 2.2 es el mismo que en la ultima version de la 1.4, por lo tanto no deberias tener problemas.
De hecho se le agrega el id del item destino al identificador de la ventana, para asegurarse que no se pisen y por tanto se abran como ventanas paralelas.
Te pido un favor, podrias pegarme el contenido del archivo basico.js para la funcion abrir_popup?.. quisiera ver si el svn te actualizo correctamente el archivo.
Ok, alli va el código de la función que me pedis.
Respecto a tus preguntas.
Los items destino son distintos
Para cada operación popup, está configurada como popup. (Si es a eso a lo que te referis)
(revisé 20 veces las configuraciones de la operación)
Abrazo.
function abrir_popup(id, url, opciones, extra, dep) {
vars = '';
if (typeof opciones != 'undefined') {
if (typeof opciones == 'string') {
vars += opciones
} else {
for (var o in opciones) {
vars += o + '=' + opciones[o] + ',';
}
}
}
if (typeof dep == 'undefined') {dep = true;}
if (dep) {
vars += 'dependent=1';
}
if (typeof extra != 'undefined') {
vars += extra;
}
var no_esta_definida = !ventana_hija[id] || ventana_hija[id].closed || !ventana_hija[id].focus || (window.opera && ventaja_hija[id].opera);
if (no_esta_definida) {
// No fue definida, esta cerrada o no puede tener foco
//Agrego el id de item a la ventana para que cuando enlace popups en cadena no repita
ventana_hija[id] = window.open(url, "ventana_" + window.toba_hilo_item[1] + id, vars);
if (isset(ventana_hija[id]) && (! window.opera || ventana_hija[id].opera)) {
ventana_hija[id].focus();
} else {
var recursiva = 'abrir_popup("' + id + '", "' + url + '", "' + vars + '", "", false)';
var js = 'if (' + recursiva + ') overlay();';
var html = "El navegador evitó que el sistema abriera una ventana emergente.
Puede abrirla manualmente haciendo <a href='#' onclick='"
+ js + "'>click aquí</a>";
notificacion.agregar(html, 'warning');
return false;
}
} else {
// Ya fue definida, no esta cerrada y puede tener foco
ventana_hija[id].focus();
ventana_hija[id].location.href = url;
ventana_hija[id].opener = window;
}
return true;
}
gracias por pegarme el codigo, queria verificar que el svn te habia actualizado correctamente el archivo.
Mira, yo aca probe con Chrome, Opera, FF y no pude hacer saltar el problema, calculo que no tenes habilitado un bloqueador de popups porque sino no podrias ver ni el primero.
Te adjunto una operacion que agregue al proyecto toba_referencia, la cual contiene un popup que apunta al ejemplo de ef_popup que se encuentra en el proyecto.
En mi maquina abre sin problemas las pantallas en popup, la operacion es sencilla esta destinada a probar el encadenamiento nomas.
Son 3 archivos + el de punto de montaje (por si no lo tenes creado).
Descomprimiendo y regenerando el proyecto toba_referencia te deberia quedar listo, calculo que el punto de montaje debe ser el mismo… pero por si las moscas va.
La idea es que te quede algo similar a la imagen.