Ich habe eine Anwendung, die versucht, Lokationseinstellungen vom Browser zu bekommen, dies dauert eine Weile, also möchte ich, dass sie beim Laden der Seite ausgeführt wird. Wenn Sie jedoch auf die Schaltfläche Absenden klicken, bevor der Standort-Rückruf ausgeführt wurde, haben Sie keine Standortdaten. Meine Frage ist einfach: Wie warte ich auf den Rückruf meines Standort-Erfolgs, bevor ich mein Formular abschicke? (ohne etwas albern wie eine Schlafanweisung).
Im Idealfall möchte ich eine Besetztanzeige blinken lassen und auf die Daten warten. Ist das möglich? Ich habe den Code, um eine Besetztanzeige sichtbar zu machen, bin mir aber nicht sicher, wie ich elegant darauf warten kann, dass die Daten verfügbar sind.
Wenn das von Ihnen verwendete Standort-Plugin keine Callback-Funktion zur Verfügung hat, müssen Sie die Ergebnisse irgendwie an die Seite binden und überprüfen, bevor der Benutzer sie absetzt.
Eine Möglichkeit besteht darin, die Ergebnisse des Standorts an das Formular zu binden und das Formular nur dann zuzulassen, wenn sich dort ein Standort befindet. Hier ist ein Beispiel für die Verwendung von .data()
, um dies zu erreichen.
Diesen Code hinzugefügt, der jede Sekunde nach einem Wert in Ihrem Standort-Plugin prüft:
%Vor%Verwenden Sie zwei Semaphore:
%Vor%Auf diese Weise sieht der Benutzer das Ladebild nur, wenn die Geodaten zum Zeitpunkt des Sendens des Formulars noch nicht vollständig geladen wurden. Sie werden feststellen, dass es egal ist, welches Ereignis zuerst ausgelöst wird, es wird nur durchlaufen, wenn beide fertig sind.
Tags und Links javascript jquery geolocation jquery-callback