2012-05-16 11 views
11

Revisa mi código en el navegador Chrome, si presionas actualizar se te mostrarán dos opciones.Javascript Cómo llamar a una función cuando elegimos Permanecer en la página en Chrome

  1. salir de esta página y
  2. estadía en esta página

Cuando pulso en el 2. Permanezca en esta página botón se debe activar mi función personalizada displayMsg ()

Can an ¿Y uno me proporciona una solución?

<script type="text/javascript"> 
function displayMsg() { 
    alert('my text..'); 
} 
</script> 
<script type="text/javascript"> 
window.onbeforeunload = function(evt) { 
    var message = 'Please Stay on this page and we will show you a secret text.'; 
    if (typeof evt == 'undefined') { 
     evt = window.event; 
    }  
    if (evt) { 
     evt.returnValue = message; 
     return message; 
    } 
    trace(evt); 
} 
</script> 

Respuesta

6

utilizar un temporizador para escuchar la variable cambio:

var vals=0; 
function displayMsg() { 
    alert('my text..'); 
} 
window.onbeforeunload = function evens(evt) { 
var message = 'Please Stay on this page and we will show you a secret text.'; 
    if (typeof evt == 'undefined') { 
     evt = window.event; 
    }  
    timedCount(); 
    vals++; 
    if (evt) { 
     evt.returnValue = message ; 
     return message ; 
    } 
    trace(evt); 
} 

function timedCount() 
{ 
t=setTimeout("timedCount()",100); 
if(vals>0) 
{ 
    displayMsg(); 
    clearTimeout(t); 
} 
} 
+0

también vea esto [listening-for-variable-changes-in-javascript-or-jquery] (http://stackoverflow.com/questions/1759987/listening-for-variable-changes-in-javascript-or -jquery) –

+1

Excelente script! Muchas gracias por tomarse el tiempo de incluir mi función displayMsg() y hacer que sea fácil de usar directamente sin más modificaciones :) –

+0

¡Gracias 'Perdickss', tu código funciona incluso en el navegador IE! –

4

Se puede utilizar una combinación de los onbeforeunload y onunload eventos, establecer un temporizador en el primero y borrarlo en este último:

var showMsgTimer; 

window.onbeforeunload = function(evt) { 
    var message = 'Please Stay on this page and we will show you a secret text.'; 
    showMsgTimer = window.setTimeout(showMessage, 500); 

    evt = evt || window.evt; 
    evt.returnValue = message; 

    return message; 
} 

window.onunload = function() { 
    clearTimeout(showMsgTimer); 
} 

function showMessage() { 
    alert("You've been trolled!"); 
} 

Esto funciona porque el evento onunload nunca se disparará cuando el usuario elige permanecer en la página.

+0

PO quiere "Cuando pulso en el 2. Permanecer en este botón de página se debe activar la función displayMsg mi encargo()", no la página de licencia –

+0

@Ravi: si usted lee el código o lo probó, lo haría ver que es exactamente lo que hace. Si elige permanecer en la página, muestra un mensaje. Si te vas, no es así. –

+0

estoy de acuerdo, pero se invocará cuando haga clic en salir de la página también. compruébelo aquí http://jsfiddle.net/VuPcf/ –

1

Utilice estas líneas de código, funciona correctamente.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> 
    </script> 
    <script type="text/javascript"> 
    $(function(){ 
    $(window).bind('beforeunload', function(){ 
     return 'Your Data will be lost :('; 
    }); 
    }); 
    </script> 
Cuestiones relacionadas