Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

216
Visualizações
ASP.NET: cómo detectar que el usuario presiona la cruz para cerrar la ventana frente a la devolución de datos en los navegadores modernos

Tenemos una aplicación que se acerca a los 20 años y que se basa en ventanas emergentes para editar registros de usuario, cada una de las cuales tiene un objeto de estado de sesión y se basa en el código completo de devolución de datos ASP.NET C#. El problema que estamos teniendo (similar a ¿Quiero detectar cuándo el usuario cierra la ventana del navegador? Pero quiero evitar necro-ear una publicación de hace 13 años) es que en los navegadores que no son IE, la solución que teníamos para detectar al hacer clic en la cruz frente a un devolución de datos ya no funciona. Esto se basó en onbeforeunload y el uso de event.clientY para verificar la posición del mouse (un truco feo pero lo único que funcionó) que no existe, por ejemplo, en Chrome.

El problema es que no parece posible distinguir entre hacer clic en la cruz y hacer una devolución de datos, ya que ambos se tratan como si estuvieran descargando el formulario. ¿Hay alguna manera de hacer esto en los navegadores modernos? Hemos intentado lo siguiente (haciendo una llamada asíncrona al servidor para marcar que el objeto de la sesión debe eliminarse):

onbeforeunload - aparece el mensaje '¿cambiando de sitio?' cuadro en cualquier acción de devolución de datos (así como la cruz).

onunload: se activa en cualquier devolución de datos, así como en la cruz.

onvisibilitychange comprobando lo mismo que onunload. p.ej:

 document.onvisibilitychange = handleWindowClose; function handleWindowClose(e) { var v = document.visibilityState; if (v === "hidden") { CallServer("Cancel"); // ajax call to server to close session } }

Verificando IsPostBack / IsCallBack y usando un indicador en el estado de la sesión para rastrear la diferencia. Al hacer clic en un control de devolución de datos, el servidor llegará dos veces, una para el evento de control y luego la llamada ajax, lo que causa aún más problemas, ya que el código que depende del estado de la sesión se romperá cuando se elimine; tenemos más de 200 páginas con las que lidiar, así que esto no es una opción para nosotros.

Existe la opción de un latido mencionado en la publicación de 2009 para comprobar si hay identificadores de ventanas muertas desde la ventana principal, pero esto no funcionará si esa ventana está cerrada, por ejemplo (tenemos ventanas que abren otras ventanas, etc.)

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda