2012-05-16 13 views
11

Bitte überprüfen Sie meinen Code im Chrome Browser, wenn Sie auf Aktualisieren klicken, werden Sie mit 2 Optionen aufgefordert.Javascript So rufen Sie eine Funktion auf, wenn wir auf Seite bleiben in Chrome wählen

  1. Diese Seite verlassen und
  2. Bleiben Sie auf dieser Seite

Wenn ich die 2. Bleiben Sie auf dieser Schaltfläche Seite klicken muss meine eigene Funktion displayMsg aktivieren ()

Kann an y man mir eine lösung zur verfügung stellen?

<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> 

Antwort

6

Verwendung ein Timer für Änderungsgröße zu hören:

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

auch betrachten [listening-for-variable-changes-in-javascript-oder-jquery] (http://stackoverflow.com/questions/1759987/listening-for-variable-changes-in-javascript-or -jquery) –

+1

Ausgezeichnetes Skript! Vielen Dank, dass Sie sich die Zeit genommen haben, meine displayMsg() -Funktion mitzunehmen und sie direkt ohne weitere Änderungen zu verwenden :) –

+0

Danke "Perdickss", Ihr Code funktioniert auch im IE-Browser! –

4

Sie eine Kombination der onbeforeunload und onunload Ereignisse verwenden können, einen Timer in der früheren Einstellung und es in der zweiten Clearing:

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!"); 
} 

Das funktioniert, weil die onunload Ereignis der Benutzer nie ausgelöst, wenn beschließt, auf der Seite zu bleiben.

+0

op will „Als ich die 2. Bleiben Sie auf dieser Seite klicken muss meine eigene Funktion displayMsg aktivieren()“, nicht das Verlassen Seite –

+0

@Ravi: Wenn Sie den Code oder getestet sie lesen, würden Sie Das ist genau das, was es macht. Wenn Sie auf der Seite bleiben, wird eine Nachricht angezeigt. Wenn du gehst, ist es nicht. –

+0

ich stimme zu, aber es wird aufgerufen, wenn Sie auf klicken, um die Seite auch zu verlassen. Überprüfen Sie es hier http://jsfiddle.net/VuPcf/ –

1

Bitte verwenden Sie diese Zeilen Code, es funktioniert einwandfrei.

<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> 
Verwandte Themen