2017-06-27 26 views
0

Ich habe ein Problem sehr ähnlich zu this one, aber dachte, dass es auf eine besonders grundlegende Art und Weise genug genug war, um seine eigene Frage zu rechtfertigen. Ich habe eine Seite, die den Standort des Benutzers einmal alle 2 Sekunden anfordert (sehr häufig, ich weiß, aber es ist für einen Zweck), getCurrentPosition() verwendend. Hier ist mein Code:JavaScript Geolocation sporadisch in IE

function locationWrapper() { 
    if (!navigator.geolocation) { 
     success = false; 
     console.log("Geolocation is not supported by this browser") 
    } 
    if (success) { 
     navigator.geolocation.getCurrentPosition(
      recordPosition, catchError, { enableHighAccuracy: false } 
     ); 
    } 
} 

Die recordPosition() Funktion wirklich tut nichts relevant (und wird nur selten erreicht) auf die Frage. catchError sieht so aus:

function catchError(error) { 
    console.log(error); 
    switch (error.code) { 
     case error.PERMISSION_DENIED: 
      console.log("User denied the request for Geolocation."); 
     case error.POSITION_UNAVAILABLE: 
      console.log("Location information is unavailable."); 
      break; 
     case error.TIMEOUT: 
      console.log("The request to get user location timed out."); 
      break; 
     case error.UNKNOWN_ERROR: 
      console.log("An unknown error occurred."); 
      break; 
    } 
} 

Alle ziemlich einfach. Dies funktioniert perfekt in Chrome und nur manchmal in IE. Das ist die verwirrende Sache. Es wird einmal am Anfang des JS-Dokuments und dann einmal alle 2 Sekunden von einer setInterval()-Funktion aufgerufen. Die erste immer funktioniert, und in dem Intervall funktioniert es etwa einmal in 20-mal, aber sonst gibt die unglaublich hilfreich POSITION_UNAVAILABLE Fehler zurück.

Ich habe versucht:

  • Ändern der enableHighAccuracy Option in getCurrentPosition()false zu sein, wie es in meinem Code

  • gesehen werden Sicherstellen, dass es keine Probleme mit den Berechtigungen in IE

  • Verlängerung der Intervallzeit auf 5 Sekunden

Jede Eingabe wird sehr geschätzt.

EDIT:

Es ist speziell IE11. Tut mir leid, dass ich das verpasst habe.

EDIT 2:

ich das gleiche Verhalten sehen this example verwenden. Das erste Mal funktioniert (zeigt Koordinaten an), aber danach zeigt es nur einen Fehler, bis ich neu lade.

Antwort

0

Das scheint also ein Problem mit IE, dass andere Benutzer auch haben. Es gibt eine question darüber auf der Edge und IE-Support-Seite, aber es wurde ein bisschen durch das OP matschig, dass Edge auch nicht funktioniert (was für mich gut funktioniert hat) und scheint ignoriert worden zu sein. Ich habe den Thread kommentiert und wenn nichts herauskommt, muss ich vielleicht meine eigene Frage nur zum IE stellen.

Scheint wie eine ziemlich große Sache für mich - wenn Entwickler getCurrentLocation() nicht verwenden können, wenn sie benötigen, ihre Websites werden einfach nicht richtig in IE funktionieren. Ich hoffe Microsoft interessiert sich dafür.