2015-01-25 11 views
8

Kullanıcının, tarayıcıdaki geçerli konumlarına, konum bağlantısını tıklattıklarında/tıklattıklarında izin vermesini isteyen aşağıdaki kodu kullanıyorum.IE11'de coğrafi konumla ilgili sorun

Bu özellik Chrome, Safari ve Firefox'ta sorunsuz çalışıyor ancak IE11'de çalışmaya başlayamıyorum. Bazı zamanlar kullanıcının konumlarını bildirmesi için tarayıcı bildirimini gösterir, ancak hiçbir şey olmaz.

Başkalarının Google Haritalar ile ilgili sorunları olup olmadığını ve IE11'de konum sorup sormadığını ve ayrıca bir çözümü olup olmadığını merak ettim mi? Ben Codepen üzerine dışarı çalıştı

<p id="error"></p> 
<form action="/" method="post"> 
<a class="location-link" id="location-link" href="#"><img src="/static/images/icons/location.png" alt="Get your current location" title="Get your current location" /></a><input type="text" name="location" value="" placeholder="Find a salon" > 
<input class="viewbtn3" value="Submit" type="submit"></form> 
<script src="/static/js/jquery.1.9.1.js"></script> 
<script src="https://maps.google.com/maps/api/js?sensor=true"></script> 

<script type="text/javascript"> 
$(document).ready(function() { 
    if (typeof navigator.geolocation == "undefined") { 
     $("#error").text("Your browser doesn't support the Geolocation API"); 
     $(".location-instruction span").hide(); 
     $(".location-link").hide(); 
     return; 
    } 
    $("#location-link").click(function(event) { 
     event.preventDefault(); 
     var addressId = this.id.substring(0, this.id.indexOf("-")); 
     var thisid = $(this).attr("id"); 
     //console.log(thisid); 
     navigator.geolocation.getCurrentPosition(function(position) { 
      var geocoder = new google.maps.Geocoder(); 
      geocoder.geocode({ 
       location: new google.maps.LatLng(position.coords.latitude, position.coords.longitude) 
      }, function(results, status) { 
       if (status == google.maps.GeocoderStatus.OK) { 
        $("#" + thisid).parent().find('input[name="location"]').val(results[0].formatted_address); 
        $(".choose_wrap").addClass('sucess'); 
       } else { 
        $("#" + thisid).parent().find("#error").html("Unable to retrieve your address<br />"); 
        $(".choose_wrap").addClass('fail'); 
       } 
      }) 
     }, function(positionError) { 
      $("#" + thisid).parent().find("#error").html("Error: " + positionError.message + "<br />") 
     }, { 
      enableHighAccuracy: true, 
      timeout: 10 * 1000 
     }) 
    }); 
}); 
</script> 
+0

diğer tarayıcılarda olduğu gibi çalışmıştır. – Dimple

+0

Hmm'de sorun yok, IE11 ve Windows 10'u herhangi bir şansla denediniz mi? – doubleplusgood

+0

Evet IE11'i denedim ama sadece bir kenar boşluğu ayarlama sorunları vardı .. geolocation ile yanlış bir şey yok – Dimple

cevap

5

Bu aslında hiçbir değişiklik olmadan IE11 benim için çalıştı:

$(document).ready(function() { 
 
    if (typeof navigator.geolocation == "undefined") { 
 
     $("#error").text("Your browser doesn't support the Geolocation API"); 
 
     $(".location-instruction span").hide(); 
 
     $(".location-link").hide(); 
 
     return; 
 
    } 
 
    $("#location-link").click(function(event) { 
 
     event.preventDefault(); 
 
     var addressId = this.id.substring(0, this.id.indexOf("-")); 
 
     var thisid = $(this).attr("id"); 
 
     //console.log(thisid); 
 
     navigator.geolocation.getCurrentPosition(function(position) { 
 
      var geocoder = new google.maps.Geocoder(); 
 
      geocoder.geocode({ 
 
       location: new google.maps.LatLng(position.coords.latitude, position.coords.longitude) 
 
      }, function(results, status) { 
 
       if (status == google.maps.GeocoderStatus.OK) { 
 
        $("#" + thisid).parent().find('input[name="location"]').val(results[0].formatted_address); 
 
        $(".choose_wrap").addClass('sucess'); 
 
       } else { 
 
        $("#" + thisid).parent().find("#error").html("Unable to retrieve your address<br />"); 
 
        $(".choose_wrap").addClass('fail'); 
 
       } 
 
      }) 
 
     }, function(positionError) { 
 
      $("#" + thisid).parent().find("#error").html("Error: " + positionError.message + "<br />") 
 
     }, { 
 
      enableHighAccuracy: true, 
 
      timeout: 10 * 1000 
 
     }) 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<script src="https://maps.google.com/maps/api/js?sensor=true"></script> 
 
<p id="error"></p> 
 
<form action="/" method="post"> 
 
    <a class="location-link" id="location-link" href="#"><img src="/static/images/icons/location.png" alt="Get your current location" title="Get your current location" /></a> 
 
    <input type="text" name="location" value="" placeholder="Find a salon"> 
 
    <input class="viewbtn3" value="Submit" type="submit"> 
 
</form>

Tek şey ben önerebilirim test ederken herhangi bir hata olup olmadığını görmek için geliştirici konsolunu kontrol etmektir.

+0

Eric'i kontrol ettiğiniz için çok teşekkürler. Müşterimizin birkaç kişi testi vardı ve onlar için işe yaramadı, ancak bu bağlantıyı browserstack ile tekrar kontrol edeceğim. – doubleplusgood

+0

, Windows 10'u kullandınız mı? Win10 ve IE11'de, tarayıcı izin ister ama sonra hiçbir şey yapmaz. – doubleplusgood

+0

Hayır, şu anda Windows 8.1'deyim. Windows 10'da, IE11'den ziyade Edge'i test ederim. Belki izin verdikten sonra yeniden yüklemeyi ve tekrar yapmayı deneyin. – Eric

2

Bunu Windows 8'de denedim. Makinede konum ayarları (bkz. Kontrol Paneli/Konum Ayarlarını Değiştir) devre dışıysa, bir hata iletisi döndürülür. Yukarıdaki kodda "hiçbir şey olmuyor". "#error" ve "# yeri-link" Aynı ebeveyn paylaşmayan, bu nedenle bu hat hata mesajı görüntülenmez:

$("#" + thisid).parent().find("#error").html("Error: " + positionError.message + "<br />") 

mesajla "açık değil Coğrafi konumu" engelleyen bu sorun var mı İstemci makinelerinde görünmekten mi?

+0

Hey brenzy, hata mesajı görüntülenmezse kesinlikle bir sorun var, bu yüzden bunu düzeltmem gerekecek. Sadece IE11/Win10'daki bazı kullanıcıların konum aramasını neden kullanabileceğini ve bazılarının bunu yapamayacağını anlamayın. Ama önce bu hatayı düzeltmeyi deneyeceğim. – doubleplusgood

+0

@doubleplusgood, neden konum ayarlarının kapalı olduğunu ve bunların bilmediğini veya Microsoft'un konumlarını desteklemediğini (konumların neden farklılık gösterdiğine ilişkin diğer yanıtlara bakın) olabilir. Umarım, hata mesajını düzeltmek, neler olduğu konusunda size bir cevap verecektir. – brenzy