wake-up-neo.net

Wie erkenne ich eine Seitenaktualisierung mit Jquery?

Wie kann ich das Ereignis zum Laden der Seite aufzeichnen?

Ich habe ein Nachrichtensystem, das alle Eingaben verliert, wenn der Benutzer die Seite aktualisiert. Ich möchte ajax zum erneuten Auffüllen verwenden. Daher muss ich feststellen, wann die Seite aktualisiert/neu geladen wurde.

37
sisko
$('body').bind('beforeunload',function(){
   //do something
});

Dies speichert jedoch keine Informationen für später, es sei denn, Sie hatten vor, das in einem Cookie (oder in einem lokalen Speicher) zu speichern, und das Ereignis unload wird nicht immer in allen Browsern ausgelöst.


Beispiel: http://jsfiddle.net/maniator/qpK7Y/

Code: 

$(window).bind('beforeunload',function(){

     //save info somewhere

    return 'are you sure you want to leave?';

});
38
Neal

wenn Sie eine Variable vor der Seitenaktualisierung buchen möchten

$(window).on('beforeunload', function(){
    // your logic here
});

wenn Sie möchten, dass Sie unter bestimmten Umständen eine Inhaltsbasis laden

$(window).on('load', function(){
    // your logic here`enter code here`
});
14
Uzair

Der gesamte Code ist clientseitig, ich hoffe, Ihnen gefällt Folgendes:

Als erstes gibt es 3 Funktionen, die wir verwenden werden:

    function setCookie(c_name, value, exdays) {
            var exdate = new Date();
            exdate.setDate(exdate.getDate() + exdays);
            var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
            document.cookie = c_name + "=" + c_value;
        }

    function getCookie(c_name) {
        var i, x, y, ARRcookies = document.cookie.split(";");
        for (i = 0; i < ARRcookies.length; i++) {
            x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
            y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
            x = x.replace(/^\s+|\s+$/g, "");
            if (x == c_name) {
                return unescape(y);
            }
        }
    }

    function DeleteCookie(name) {
            document.cookie = name + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
        }

Nun beginnen wir mit dem Laden der Seite:

$(window).load(function () {
 //if IsRefresh cookie exists
 var IsRefresh = getCookie("IsRefresh");
 if (IsRefresh != null && IsRefresh != "") {
    //cookie exists then you refreshed this page(F5, reload button or right click and reload)
    //SOME CODE
    DeleteCookie("IsRefresh");
 }
 else {
    //cookie doesnt exists then you landed on this page
    //SOME CODE
    setCookie("IsRefresh", "true", 1);
 }
})
9
Arrabi

Es gibt zwei Ereignisse auf der Clientseite (siehe unten).

1. window.onbeununload (Aufrufe auf Browser/Registerkarte Schließen & Seite laden)

2. window.onload (Aufrufe beim Laden der Seite)

Auf der Serverseite

public JsonResult TestAjax( string IsRefresh)
    {
        JsonResult result = new JsonResult();
        return result = Json("Called", JsonRequestBehavior.AllowGet);
    }

Auf Kundenseite

 <script type="text/javascript">
    window.onbeforeunload = function (e) {
        
        $.ajax({
            type: 'GET',
            async: false,
            url: '/Home/TestAjax',
            data: { IsRefresh: 'Close' }
        });
    };

    window.onload = function (e) {

        $.ajax({
            type: 'GET',
            async: false,
            url: '/Home/TestAjax',
            data: {IsRefresh:'Load'}
        });
    };
</script>

Auf Browser/Registerkarte Schließen: Wenn Benutzer den Browser/Registerkarte schließen, wird window.onbeununload ausgelöst und der IsRefresh-Wert auf der Serverseite wird "Schließen" sein.

Bei Refresh/Reload/F5: Wenn der Benutzer die Seite aktualisiert, wird first window.onbeununload mit IsRefresh value = "Close" ausgelöst, und window.onload wird mit IsRefresh value = "Load" ausgelöst, so Jetzt können Sie endlich feststellen, dass Ihre Seite aktualisiert wird.

0
Umar Shafeeq