none
Detectar cierre del browser IE7 RRS feed

  • Pregunta

  • Hola Foro.

     

    Un control que hago en mi sitio web y funcionaba perfectamente en IE6 y anteriores, no funciona en IE7.

    Cuando el usuario cierra el browser, en el onunload de las páginas detecto dicha acción para abandonar forzosamente la sesión.

     

    Lo que uso es la propiedad screenTop. Cuando el valor de dicha propiedad es > 9000 significa que se cerró. De lo contrario, pudo haber navegado a otra página de mi sitio o refrescado la misma.

     

    El código que tengo básicamente es el siguiente

     

    function captarCierre()

    {

    if(self.screenTop > 9000)

    {

    alert('se cerró')

    }

    }

     

    Este código hace mucho que funciona en mi sitio como control, hasta que empecé a experimentar problemas en IE7.

     

    En todos los foros que consulté mencionan casos similares o iguales, pero no presentan soluciones serias, ya que las que se publicaron y probé, no funcionan perfectamente.

     

    Por favor, espero comentarios.

    Saludos....

     

    jueves, 25 de octubre de 2007 19:05

Todas las respuestas

  • Hola Wink:

     

    2 Cosas:

     

    1- Has comprobado que la función se dispara?

    2- Has comprobado el  valor de self.screenTop?

     

    Puedes depurar el código JavaScript para ver mas detalles.

     

    Salu2

    viernes, 26 de octubre de 2007 7:54
  • Hola Luis.

     

    Si. Ya hice todo eso.

     

    El motivo por el cual no funciona en IE7 es que el valor de screenTop son distintos entre las versiones de IE al cerrarse la ventana.

    Aclaro. Sólo al cerrarse la ventana.

    En IE6 supera los 9000, por eso se utiliza para detectar el cierre (este control no fue invento mio, lo he sacado de otros foros cuando tuve que desarrollar el control hace mucho tiempo)

    En IE7 devuleve el valor real de screenTop (119 cuando la ventana está maximizada) Por lo tanto no es un valor que pueda utilizarse.

     

    Tiene que haber otra forma. Alguien tuvo que hacerlo. Espero encontrarlo

     

    Gracias y saludos

    viernes, 26 de octubre de 2007 13:41
  • Probe con esto y funciono..........

     

     function initUnload()
      {
         if (self.screenLeft != null) { 
       ....
          } else {

    .....
             
          }
      }

    lunes, 29 de octubre de 2007 19:45
  • A mi no. Lo probaste con IE7 ? Porque en el 6 sí funciona.

    En realidad, lo que hace es lo mismo que con el screenTop. Te retorna el valor real siempre. No te dice nada que puedas diferenciar entre abierto y cerrado.

     

    Al estar maximizada la ventana, siempre retorna cero.

     

    Saludos y muchas gracias por tu respuesta.

     

    martes, 30 de octubre de 2007 18:06