我使用html5地理本地化和本地存储创建一个网站,我使用JS,在大多数浏览器中都可以,但我在Safary遇到了一些问题:
这里的解释是:
点击按钮,我想让用户获得GEO位置,将其保存在本地存储中,稍后检索信息并将其发送到电子邮件。 我发出一些警告来验证功能是否正确。
你们中的任何人都可以帮助我理解原因并找到解决方案吗?
感谢您的帮助
这里是代码:
(function ($) {
$(document).ready(function () {
function localitaionGPS(obj){
var obj;
function getLocation(){
if (navigator.geolocation){
navigator.geolocation.getCurrentPosition(showPosition);
}else{
alert("Votre navigateur ne suporte pas la Geolocalisation :(");
}
}
function showPosition(position){
var maPosition = " position : latitude: " + position.coords.latitude + " longitude: " + position.coords.longitude;
if(typeof(Storage)!=="undefined"){
var dateHeure, anne, mois, jour, heure, minute,seconde;
dateHeure = new Date();
anne = dateHeure.getFullYear();
mois = dateHeure.getMonth()+1;
jour = dateHeure.getDate();
heure = dateHeure.getHours();
minutes = dateHeure.getMinutes();
secondes = dateHeure.getSeconds();
if (heure < 10){heure = "0"+heure;}
if (minute < 10){ minute = "0"+minutes;}
if (secondes < 10){secondes = "0"+secondes;}
var laDate = jour +"/"+ mois +"/"+ anne +"_"+heure +"h"+ minutes +":" +secondes;
// to verify the data
alert (laDate + "_"+ maPosition);
localStorage['gpsPosition'+laDate] = laDate+"_espece : "+obj+ "_"+ maPosition;
}else{
alert("Votre navigateur ne suporte pas le local storage :(");
}
}
getLocation();
}
var i=0;
$('.btnGeo').on("click",function () {
var src = $(this).attr("data-objet");
localitaionGPS(src);
})
// rest of code to retrieve and errase the local store data.
$('.getDatos').on("click",function () {
var datos = [];
for(var i=0; i<localStorage.length; i++){
var strKey = localStorage.key(i);
var strVal = localStorage.getItem(strKey)+" ; ";
datos.push(strVal);
}
$('#message').val(datos);
});
$('.cleanDatos').on("click",function () {
localStorage.clear();
});
});})(jQuery);
答案 0 :(得分:0)
您没有告诉我们您的开发人员工具栏输出是什么,所以我不确定您的错误位于何处。 但是......
getCurrentPosition有两个回调,第一个是成功回调,第二个是错误回调。例如,如果在浏览器上禁用了地理定位,或者从浏览器/设备后端抛出了某种形式的错误,那么将调用第二个回调。尝试添加第二个回调并在您遇到问题的设备/浏览器上进行测试,以获得有关错误的更多信息。
编辑: 顺便说一下,getCurrentPosition还有第三个参数,它是一个包含一个propery的对象,告诉位置服务何时超时。如果您希望能够管理超时而不是让设备处理超时,这可能非常有用。