2011-12-23 8 views
13

¡¡El niño perdió a su padre !!Función de llamada en la ventana de apertura

Tengo una ventana principal, cuando alguien hace clic en una imagen se abre una ventana emergente JS y muestra la foto y su información.

Para cerrar la ventana emergente/hijo y a parpadear un elemento en la ventana de mi padre/abridor, he estado utilizando esta función:

function closeWindow() { 
    var currentID = document.getElementById('currentID').value; 
    window.opener.flashElement(currentID); 
    window.close(); 
} 

Mi problema es el siguiente no funciona si mis usuarios a navegar lejos de la página que se abrió originalmente. Por ejemplo, en la ventana emergente, hay botones siguiente y anterior para desplazarse por las fotos individuales en ese conjunto de resultados, que vuelve a cargar la página con un nuevo valor de cadena de consulta.

Si mi usuario se desplaza (recarga la página) menos de 7 veces, está bien, pero si se desplazan más, la función window.opener no funciona, y debido a eso, la función window.close tampoco.

Probablemente podría reconstruir la página para que los datos lleguen a través de una llamada AJAX, en lugar de volver a cargar la página, pero eso es mucho trabajo que podría prescindir.

¿Alguna idea?

+0

¿Cuándo se llama a la función 'closeWindow()'? Cuando el usuario hace clic en un botón "cerrar" o algo similar? Y para ser totalmente claros, 'closeWindow()' está en la ventana secundaria, ¿correcto? –

+0

posible duplicado de [Ventana emergente.Operador redirigido o cerrado] (http://stackoverflow.com/questions/5872721/popup-window-opener-redirected-or-closed) –

+0

@JackieChiles sí closeWindow() se invoca cuando los usuarios hace clic en un botón de cerrar y CloseWindow() está en la ventana secundaria. Como digo, funciona bien si el usuario no recarga la ventana emergente más de 7-8 veces. – TheCarver

Respuesta

12

Mi conjetura es que

window.opener.flashElement(currentID); 

es tirar un error, o no existe la función. Lo más probable es que el elemento con el valor de currentID no exista en la página. Intenta atrapar el error.

function closeWindow() { 
    var currentID = document.getElementById('currentID').value; 
    try { 
     window.opener.flashElement(currentID); 
    } catch (err) { 
     alert(err.description || err) //or console.log or however you debug 
    } 
    window.close(); 
} 
+0

Derecha que ayudó bastante en realidad. Descubrí que el valor de currentID estaba vacío, por lo que estaba causando un error dentro de la función en la página principal. Pero esto todavía no explica por qué falta el currentID en el 1er lugar. Es un campo de texto oculto poblado por ASP con fotoID. Si el photoID no estaba presente, ¡la página no se cargaría! ¡¡Extraño!! – TheCarver

Cuestiones relacionadas