De vuelta en los viejos días de CGI, teníamos muchas formas que desencadenarían varias acciones de back-end. Tales como notificaciones de texto a grupos, trabajos de impresión, cultivo de datos, etc.
Si el usuario estaba en una página que decía "Por favor, espere ... realizando un trabajo ENORME que podría llevar algún tiempo". ¡Era más probable que pulsaran REFRESH y esto sería MALO!
¿POR QUÉ? Porque desencadenaría trabajos más lentos y eventualmente empantanaría todo.
¿La solución? Permítales hacer su formulario. Cuando envían su formulario ... Comience su trabajo y luego diríjalos a otra página que les indique que esperen.
Donde la página en el medio en realidad contenía los datos del formulario que se necesitaban para comenzar el trabajo. La página de espera sin embargo contiene un historial de javascript destruido. Por lo tanto, pueden recargar esa página de espera todo lo que deseen y nunca desencadenará el inicio del trabajo original en segundo plano, ya que esa página de espera solo contiene los datos de formulario necesarios para la propia WAIT.
Espero que tenga sentido.
La función de destrucción de historial también les impidió hacer clic en ATRÁS y luego refrescarse también.
Fue muy sencillo y funcionó de maravilla durante MUCHOS años hasta que la organización sin fines de lucro se redujo.
Ejemplo: ENTRADA DE FORMULARIO - Recoge toda su información y, cuando se envía, activa su trabajo de back-end.
RESPONSE from form entry - Devuelve HTML que realiza un redireccionamiento a su página de espera estática y/o POST/GET a otro formulario (la página de espera).
PÁGINA DE ESPERA - Solo contiene los datos de FORMA relacionados con la página de espera, así como javascript para destruir el historial más reciente. Me gusta (-1 o -2) para destruir solo las páginas más recientes, pero todavía les permite volver a su página de entrada de FORM original.
Una vez que estén en su página de espera, pueden hacer clic en ACTUALIZAR tanto como lo deseen y nunca generarán el trabajo de FORMULARIO original en el back-end. En cambio, su página de espera debe incluir una actualización cronometrada de META para que siempre pueda verificar el estado de su trabajo. Cuando se completa su trabajo, son redirigidos fuera de la página de espera a donde lo desee.
Si lo hacen ACTUALMENTE ACTUALIZAR ... Simplemente están agregando una verificación más de su estado de trabajo allí.
Espero que ayude.Buena suerte.
Gracias Set ....! – pankaj
Solo una nota de que el evento onbeforeunload no está disponible en las versiones del navegador Opera. – WillyCornbread
¿Hay alguna manera de hacer algo si el usuario elige permanecer en la página? – riship89