2017-08-20 1 views
0

Ich führe eine Countdown-Uhr. Wenn der Countdown abgelaufen ist. Ich möchte die Seite einmal aktualisieren. Ich verwende location.reload, aber es lädt und lädt und lädt weiter. Wie kann ich diese Schleife unterbrechen?Wie stoppe ich JQuery location.reload Laden mehr als einmal?

<script type="text/javascript"> 
    $('#clock').countdown('<?php echo $tickets_pageRecord['sales_start_date']; ?>') 
    .on('update.countdown', function(event) { 
    var format = '%H hr%!H %M min%!M %S sec%!S'; 
    if(event.offset.totalDays > 0) { 
     format = '%-d day%!d ' + format; 
    } 
    if(event.offset.weeks > 0) { 
     format = '%-w week%!w ' + format; 
    } 
    $(this).html('Box Office opens in '); 
    $(this).append(event.strftime(format)); 
    }) 
    .on('finish.countdown', function(event) { 
    $(this).html('<h3>Click on shopping cart to buy tickets</h3>'); 
    location.reload(); 
    }); 
</script> 
+0

Verwenden Sie den lokalen Speicher, um eine Variable zum Speichern des Status festzulegen. –

+0

localstorage ist nur die Option –

Antwort

1

Sie müssen einige Zustand übergeben, also wenn Sie neu geladen haben, führen Sie nicht alles noch einmal aus.

Sie können ...

  1. hinzufügen Query-String-Parameter Ihr Skript sagen, nicht
  2. Hinzufügen einer Markierung zu einer der Speicheroptionen (Cookie, lokalen Speicher, etc.) ausführen zu können, können Sie überprüfen, um zu entscheiden, ob das Skript
  3. laufen Wenn die Seite wesentlich ist (Sie sind erfrischend, weil es ich gehe davon aus ist), die Sie für diesen Unterschied

testen konnte aber noch besser als das - wie Sie sind Führen Sie PHP auf dem Server aus, wenn die Zeit bereits verstrichen ist - fügen Sie das JavaScript einfach nicht mehr hinzu, da Sie es nicht mehr benötigen (es sieht so aus, als ob Sie es aktualisieren, wenn die Kasse geöffnet ist).

+0

Das Problem mit der Verwendung von PHP, wie Sie vorschlagen, ist, dass der Benutzer die Seite immer noch aktualisieren muss, wenn sie dort sitzen und bis zur letzten Sekunde zählen. Ich möchte das Alter automatisch auffrischen und die Links und Warenkörbe anzeigen. Also PHP nicht ganz was ich brauche. – TerryAlly

+0

@TerryAlly - überprüfen Sie die Zeit auf der Serverseite, wenn es vor der Zeit ist, die Sie das Skript hinzufügen ... wenn es nach der Zeit ist, entfernen Sie das Skript. Auf diese Weise passiert die Aktualisierung nicht, wenn die Kasse geöffnet ist. Möglicherweise benötigen Sie eine kleine Unterlegscheibe, da die Client-Zeiten nicht perfekt auf Ihre Serverzeit abgestimmt sind. Daher möchten Sie möglicherweise die Zeit angeben, zu der Sie die erste Seite gesendet haben. – Fenton

+0

Ich entschied mich, mit PHP zu kombinieren, wie Sie vorgeschlagen haben. Aber location.reload() war immer noch feuern, also habe ich es entfernt und durch eine Umleitung auf die gleiche URL ersetzt und das hat funktioniert. JQuery ist wirklich kompliziert! – TerryAlly

Verwandte Themen