Closed johanlahti closed 7 years ago
Ett alternativ kan ju vara att dölja ikonen om sMap ej är driftad under https och webbrowser inte stödjer osäker anslutning https://youtu.be/c9C99AqX0D0
Det rekommenderade sättet verkar vara att fånga felet i callbacken för geolocation.getCurrentPosition()
.
navigator.geolocation.getCurrentPosition(function(success) { /* Do some magic. */ }, function(failure) { if(failure.message.indexOf("Only secure origins are allowed") == 0) { // Secure Origin issue. } }; });
Om man bara letar efter http/https skulle kartan i det här fallet kunna ligga i en iframe på en sida som körs i http, där den senare förmedlar positionen på ett osäkert sätt till iframens applikation (länk).
Nackdelen med det blir att svaret kommer med en potentiellt lång fördröjning (asynkront) och att användaren dessförinnan måste tillåta att positionen delas. Vore konstigt om knappen bara försvinner därefter… så jag tror lösningen måste bli att förbättra felmeddelandet.
Ett alternativ kunde vara att kolla (location.protocol !== "https:" && parent.window.location.protocol !== "https:")
vilket borde vara tillfredsställande för att detektera det (men en iframe kan ju också vara i en iframe o s v…).
Jag har fått en mer detaljerad beskrivning av den önskade funktionaliteten och det gäller tydligen inte https. Det handlar om att man någon tidigare nekat sidan tillgång till positionen eller har inställningar som inte tillåter positionering. Eftersom jag inte kan lägga mycket tid på det kommer jag bara ändra felmeddelandet med uppmaning att ändra platsinställningarna.
Key matches the default error message, value is the displayed error message (replacing the default message).
// Svenska
errorMessages: {
"User denied Geolocation": "Kunde inte hitta din position. Ändra platsinställningarna i din telefon.",
"Only secure origins are allowed": "Kunde inte hitta din position. Anslutningen är osäker (kräver https:)."
}
// English
errorMessages: {
"User denied Geolocation": "Could not geolocate you. Change the geolocation settings in your phone.",
"Only secure origins are allowed": "Could not geolocate you. The connection is insecure (requires https:)."
}
Suggestion from Magnus L to change Swedish error message:
Förslag. Det kan stå som i Hitta.se, eller kanske "Kunde inte fastställa position. Ändra i Inställningar till "Tillåt platstjänster"".