2014-11-26 28 views
14

Geolocation API'sini web sunucumda oluşturdum ve tüm tarayıcılar iyi çalışıyor. Safari 8 ve 7.1 hariç. Tarayıcı izin verdikten veya izin vermeden sonra izin ister ve tarayıcıyı (sekme) kullanılamaz hale getiren sonsuz bir döngü içinde sona erer. Safari'de sadece http://html5demos.com/geo'a giderek kolayca yeniden üretilebilir.Safari 8 ve 7.1'deki Coğrafi Konum API'sı sorulmasına izin verir

Bunun için herhangi bir düzeltme var mı yoksa bu sadece Safari'deki bir hata mı? Aradım ama ilgili bir şey bulamadım.

enter image description here

+0

İki onaylama diyaloğum var - biri tarayıcıdan, biri sistemden. Sistem açıkken - tarayıcı kapanmıyor. Sistem diyaloğuna katılırsam - tarayıcıyı kapatabilirim. Bir böcek gibi görünüyor. – Pinal

+0

Bence bu bir hata. Belki de Yosemite'de tamir ettiler mi? – www139

+0

Yosemite'deyim. –

cevap

26

Ekibimiz çok gördüm. İlk başta, diğer tarayıcıların görmezden geldiği bir çeşit döngü içinde sıkışmış olabileceğimizi düşündük, bu yüzden kodu destekledik ve aramanın sadece bir kez gerçekleştiğini doğruladık. Bir ara noktaya zorlayarak ve uyarıların gelmesini sağlayarak (ve geliyor ve geliyor ...) JavaScript'i askıya aldık. Bu noktada, sorunun kodumuzda olmadığından emin olduk.

Bir hevesle, aramayı bir setTimeout (arama yığınının boşalmasına izin vermek için) içinde GeoLocation API'ye yerleştirdim ve sorun giderildi. Bu sorunun neden düzeltileceğine dair hiçbir fikrim yok. . .

Düzenleme isteği Başına

, ben https://jsfiddle.net/r8hst2zp/1/

+1

Bu soruna bir arayış nedeniyle buraya geldi ve bu kesinlikle sorunu çözdü. Teşekkürler! – saikofish

+0

Teşekkürler! Beni çok fazla zaman kaydetti :) – Ptur

+1

Ditto. Bu hatayı bir süredir (ilk başta başka bir hatanın arkasına gizlenmiş olan) ve asla yeniden üretemedim. Bir takım üyesi canlı olsaydı, bu yüzden onun üzerine çıktı ve bu davranışı gördüm. Bu cevap onu temizledi. Her zaman gerçekleşmediğini unutmayın ... –

1

ben safari bir hata olduğunu sanmıyorum, bunu benim için iyi çalıştı, şu örneği deneyebilirsiniz:

http://www.w3schools.com/html/html5_geolocation.asp

+0

Bu web sitesinde sürekli olarak izin almak istemiyorum. Http://html5demos.com/geo adresine gittiğinizde ne olur? –

+0

benim için aynı şey hata yok – RadleyMith

+0

Ben html5demos.com/geo hata alıyorum ama burada değil http://www.w3schools.com/html/html5_geolocation.asp. Weird ... – stianlp

1

Tamam @ örnek koydular. Yani @MeMTn gelen ve Chris-camaratta @ iki cevaplardan, burada birkaç düşünceler: Ben bir setTimeout içine Coğrafi API çağrısı yerleştirilen bir kapris üzerinde

1)

(izin vermek yığmak için çağrı yığınını) ve sorun gitti. Bu sorunun neden düzeltileceğine dair hiçbir fikrim yok. . .

Aynı şeyi angularjs uygulamasında yaptım ve işe yarıyor. Mükemmel!

2)

bunu düşünmüyorum safari bir hata olduğunu, bunun benim için iyi çalıştı, şu örneği deneyebilirsiniz: http://www.w3schools.com/html/html5_geolocation.asp

içinde (bu işleri gel Nasıl Safari!) SetTimeout olmadan?

Angularjs uygulamasında, GeoLocation çağrısı, sayfa yüklendiğinde gerçekleşen ilk şeylerden biridir. Hemen hemen tüm diğer uygulamalar/web sayfaları için geçerli olduğuna inanıyorum. W3 örneğinde, kullanıcı tıklattığında (sayfa yüklendiğinde gerçekleşen) GeoLocation'a çağrı yapan bir tıklanabilir düğme vardır.

Bir zaman aşımı belirleyerek, Safari'nin birkaç (mili) saniye boyunca başka bir şeyle (tüm tanıdığım için GeoLocation API'yi çağırmakla ilgisi olabilir) ilgilenmesine izin veriyoruz.

Zaman aşımını < 10 olarak ayarlarsam, hata localhost'ta olsa bile geri döndürülür.Sanırım şimdilik 100 ms ile yapışacağım. Ancak bu, diğer çalışan tarayıcılar için oldukça haksızlıktır.

Hata ya da değil, Safari ile ilgili bir şey.

+0

Yea'ya ekledi, bu Safari'de bir hata gibi görünüyor. Daha önceki noktamızı yineleyerek, JavaScript'i bir kesme noktası ile duraklatmak, ek açılır pencereleri durdurmadı (kodumuzda bir sorun olsaydı beklendiği gibi). Bizim durumumuzda yer istendiğinde çağrı yığını oldukça büyüktü; zaman aşımı ayarı etkin bir şekilde temizlendi. W3Schools örneğinin de küçük bir çağrı yığını vardı, bu yüzden ne olursa olsun, Safari'nin çağrı yığını kullanımı kesinlikle bir faktör gibi görünüyor. –