2016-04-18 11 views
1

Meine Anwendung ist MVC5, ich möchte den Benutzer warnen, wenn sie die Registerkarte Browser schließen. Ich fand diese Lösung Setting onbeforeunload on body element in Chrome and IE using jQuery, funktioniert gut, außer ich verwende location.href in wenigen Fällen (benutzerdefinierte Befehlsschaltflächen in Telerik Grid). versucht, die folgenden:onbeforeunload Navigation mit location.href

$(window).bind('hashchange', function() { 
       validNavigation = true; 
    }); 

Um zu vermeiden, den Benutzer zu fragen, ob der Mangel die Seite zu verlassen. Gibt es eine bessere Möglichkeit, den Benutzer vor dem Schließen des Browser-Tabs zu warnen?

+0

und warum Hashchange dann? Die Frage scheint mir widersprüchlich zu sein. –

+0

Möglicherweise ist haschange nicht der richtige Weg, um Änderungen an der Seitenposition zu erkennen. Konnte nicht den richtigen Weg OnbeforeUnload überschreiben, wenn ich location.href verwende. Die verwendete Lösung: $ ("a"). Bind ("click", function() { validNavigation = true; }); – hncl

Antwort

0

Versuchen Sie dies;)

einige Änderungen in diesem Code benötigen:

window.onbeforeunload = function() { 
    if(validNavigation){ 
    validNavigation = false; 
    /* if this click is valid means user action is not close window or reload page then just return; */ 
    return; 
    } 

    /* Want to ask user before leaving the page */ 
    return "Are you sure you want to leave this page bla bla bla?"; // you can make this dynamic, ofcourse... 
}; 


validNavigation = true; 
$(document).on('click', '.validNavigation', function(){ 
    validNavigation = true; 
}); 

Nun, was Sie tun müssen, ist validNavigation Klasse für alle Links für diejenigen hinzufügen, die Sie nicht wollen onbeforeunload Nachricht zeigen, zu Benutzer;

UPDATE Wie pro Kommentar:

function gotopage(args){ 
    /* set validNavigation to true to don't show warning on page load; */ 
    validNavigation = true; 
    window.location.href = [args]; 
} 

Für welche Aktion Sie nicht die Warnung an Benutzer zeigen, sie will einfach eingestellt validNavigation = true; und Erklärung setzen, nachdem es Standortwechsel führen kann;

+0

Danke, hört sich nach einem guten Ansatz an; Ich konnte jedoch nicht herausfinden, wie ich eine Klasse hinzufügen kann: Funktion gotopage (args) { window.location.href = [args]; } – hncl

+0

Wenn Sie diese Warnung dem Benutzer nicht anzeigen möchten, fügen Sie entweder class zu 'a' hinzu oder setzen Sie 'validNavigation = true;' für eine Aktion; – itzmukeshy7

+0

hat super funktioniert. Erwarten Sie, wenn Sie Lightgallery Lightbox verwenden. Ich musste $ hinzufügen ('# lightgallery'). Bind ("click", function() { validNavigation = false; }) ;. Danke – hncl

Verwandte Themen