[Resuelto] Choque entre 2 Scripts, al colocar los 2 uno no se ejecuta

Iniciado por Alarkon_88, 11 Agosto 2018, 00:02 AM

0 Miembros y 1 Visitante están viendo este tema.

Alarkon_88

Saludos, el problema es el siguiente tengo mi web y queiro colocar un script para que al tratar de salir de ella le diga al cliente que si esta seguro de salir ya que los cambios no se guardaran

ok todo bien hasta ahi pero tambien tengo un chat online de tawk.to y al colocar los 2 scripts juntos el primero que es el de confirmacion para cerrar la pagina no hace su funcion pueden probar el codigo

Código (html4strict) [Seleccionar]

<head>
<title>Prueba de abandono de página</title>

SCRIPT 1
<script language="javascript" type="text/javascript">
   
   var bPreguntar = true;
   
   window.onbeforeunload = preguntarAntesDeSalir;
   
   function preguntarAntesDeSalir()
   {
     if (bPreguntar)
       return "¿Seguro que quieres salir?";
   }
</script>


</head>
<body>
<h1>Ejemplo de abandono de página</h1>
<p>Por defecto preguntará hasta que pulses el botón de "No preguntar"</p>
<input type="button" value="Preguntar" onclick="bPreguntar = true;" >
&nbsp;&nbsp;
<input type="button" value="No preguntar" onclick="bPreguntar = false;" >
<br/><br/>
<a href="http://www.jasoft.org">Ir a otra página</a>
   
SCRIPT 2

<script>
var Tawk_API=Tawk_API||{}, Tawk_LoadStart=new Date();
(function(){
var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0];
s1.async=true;
s1.src='https://embed.tawk.to/5b558301df040c3e9e0bdbab/default';
s1.charset='UTF-8';
s1.setAttribute('crossorigin','*');
s0.parentNode.insertBefore(s1,s0);
})();
</script>

#!drvy

Cuando usas esto:

Código (javascript) [Seleccionar]
window.onbeforeunload = preguntarAntesDeSalir;

Estas ree-escribriendo todo el evento. Tanto a ti como a cualquiera que lea estos temas, os recomiendo que os olvidéis de usar los eventos de esta forma y que deis de palos a los que lo siguen haciendo.




Empieza a usar event listeners en vez de re-escribir eventos enteros.
https://developer.mozilla.org/es/docs/Web/API/EventTarget/addEventListener

Código (javascript) [Seleccionar]
window.addEventListener('beforeunload', function(event) {

 var confirmationMessage = '¿Seguro que quieres salir?';

 event.returnValue = confirmationMessage;
 return confirmationMessage;
});


Saludos

Alarkon_88

#2
Wow amigo excelente me funciono muy bien amigo pero ahora tengo otra duda, por ejemplo quiero que el script funcione al actualizar o cerrar la pagina solamente.

El problema surge al enviar un formulario, al presionar el botón de submit trata de redireccionar a otro archivo .html pero me sale el mensaje de alerta también como haría para que en esos casos no saliera la alerta, gracias.

Alarkon_88

Saludos, el problema fue solucionado por aca dejo el codigo para lo que tengan el mismo problema..

lo que hice fue colocar en el boton de submit onclick="mostrarPregunta(false)"

var bPreguntar = true;

function mostrarPregunta(pregunta) {
  bPreguntar = pregunta;
}

window.addEventListener('beforeunload', function(event) {
  if (bPreguntar) {
    var confirmationMessage = '¿Seguro que quieres salir?';

    event.returnValue = confirmationMessage;
    return confirmationMessage;
  }
});


y en el html

<input type="button" value="Preguntar" onclick="mostrarPregunta(true)">
<input type="button" value="No preguntar" onclick="mostrarPregunta(false)">