2016-07-29 9 views
0

Warum nicht duplizieren: Die Frage wurde im vorherigen Post nicht beantwortet.Kann ich SetTimeOut() nach der Seitenumleitung ausgeführt bekommen?

Ich habe einen Link zum Löschen, der beim Anklicken einen Popup auslöst, der eine Schaltfläche enthält. Wenn ich auf diese Schaltfläche klicke, wird die Seite (im Popup) auf eine neue interne Seite umgeleitet. Was ich erreichen möchte, ist, dass das Pop-up nach 1 Sekunde nach der Umleitung schließen sollte. Ich habe die Funktion beim Anklicken der Schaltfläche angewendet, die nur vor der "Popup Redirection" verfügbar ist.

$('.page-user-cancel .btn').click(function(e) { 
    window.onunload = refreshParent; 
    setTimeout(function(){ 
     function refreshParent() { 
     window.opener.location.reload(); 
     window.close(); 
     } 
    } , 1000); 
}); 

Wenn ich nicht klar bin, bitte Kommentar. Englisch ist nicht meine Muttersprache.

EDIT

Wenn das nicht möglich ist, ist es möglich, die Funktion auszulösen, wenn das div auf der neuen Seite (nach Umleitung) geladen wird?

UPDATE

Dies funktioniert nicht:

var dival = $('.inside .alert').length; 
if (dival > 0){ 
    window.onunload = refreshParent; 
    function refreshParent() { 
     window.opener.location.reload(); 
     window.close(); 
     } 
} 
else{} 

Es funktioniert erst nach erfrischend.

Habe es funktioniert: Hatte den Funktionsaufruf von RefreshParent entfernen. ist vielleicht nicht die beste Praxis, aber es funktioniert so.

+1

Besser wäre es, die umgeleitete Seite in das Pop-up-Fenster schließen zu lassen, anstatt zu versuchen, über das Elternteil zu schließen. Sie können dies über 'window.close()' tun. – Utkanos

+0

Irgendwie habe ich keinen Zugriff auf die neue Seite, URL ändert sich dynamisch. –

Antwort

0

Der erste Teil ist nicht möglich, da beim erneuten Laden der Seite JavaScript der vorherigen Seite nicht ausgeführt wird.

Zweiter Teil ist besser. Ja, Sie können die Seite laden:

$(document).ready(function() { 
    // Check your div here 
}); 
+0

Ich habe dies früher versucht, aber es wird ausgeführt, ohne die Timeout-Funktion zu respektieren. –

+0

Wie überprüfe ich mein div? Ich habe gelesen, dass wir load() nicht für div-Elemente verwenden können. –

+0

'$ ('div # id-of-div'). Länge> 0 'wenn' div' existiert –