Геолокация не работает в Safari 5.x в Windows 7 / XP

Я работаю над приложением, которое использует стандартный API геолокации W3C, но я не могу, хоть убей, заставить его работать в Safari на моем ПК с Windows 7 и XP. Он отлично работает на моем iPad и моем iPhone. Он также отлично работает в Chrome (5, 6, 7 и сборка Canary) и в Firefox (3.6). У меня нет Mac, поэтому я не могу его протестировать на нем. IE пока не поддерживает геолокацию, так что это тоже покрыто.

Я создал урезанную версию и размещаю ее на Google Apps Engine, чтобы вы могли ознакомиться с кодом: http://html5-geolocator.appspot.com/ . Весь (упрощенный) javascript находится в html, поэтому вы должны иметь возможность щелкнуть правой кнопкой мыши и отладить / просмотреть исходный код.

Это в значительной степени прямое преобразование примеров из Google Map API DevGuide . Достаточно интересно, что примеры, которые размещает Google, также НЕ РАБОТАЮТ в Safari 5.0.x в Windows 7 (но они отлично работают на всех этих других платформах, как и мое приложение), например http://code.google .com / apis / maps / documentation / javascript / examples / map-geolocation.html обнаруживает ту же проблему, что и мое приложение, карта не отображается, веб-страница остается серой.

В результате некоторой отладки (предупреждение (" Я здесь") : -) кажется, что в Safari он выполняет navigator.geolocation.getCurrentPosition (myCallback), но никогда не достигает myCallback ... как будто он никогда не возвращается из getCurrentPosition. Я также заметил, что если я оставляю окно браузера открытым на ночь, когда я возвращаюсь к нему утром, появляются предупреждение и карта (хотя и не всегда). Я также попытался добавить errorCallback navigator.geolocation.getCurrentPosition (myCallback, errorCallback), но он также никогда не выполняет это, снова предполагая, что он никогда не возвращается из вызова getCurrentPosition.

Почему это происходит?

EDIT: когда я возвращаюсь к нему утром, появляется предупреждение и карта (хотя и не всегда). Я также попытался добавить errorCallback navigator.geolocation.getCurrentPosition (myCallback, errorCallback), но он также никогда не выполняет это, снова предполагая, что он никогда не возвращается из вызова getCurrentPosition.

Почему это происходит?

EDIT: когда я возвращаюсь к нему утром, появляется предупреждение и карта (хотя и не всегда). Я также попытался добавить errorCallback navigator.geolocation.getCurrentPosition (myCallback, errorCallback), но он также никогда не выполняет это, снова предполагая, что он никогда не возвращается из вызова getCurrentPosition.

Почему это происходит?

EDIT: Только что провел еще несколько тестов, я добавил параметр тайм-аута (navigator.geolocation.getCurrentPosition (myCallback, errorCallback, {timeout: 5000});), и действительно, время ожидания истекает постоянно, независимо от того, насколько высоко я его установил. никогда не возвращается из службы геолокации Google, но почему?

6
задан Cœur 2 February 2019 в 03:59
поделиться