html5 getCurrentPosition не работает в Safari, Safari для ios или IE11 - PullRequest
0 голосов
/ 01 февраля 2020

РЕДАКТИРОВАТЬ: Симптомы этой проблемы противоречивы. Сегодня я попробовал это снова, и вдруг это работает ... иногда. Если я перефразирую sh снова и снова, это работает примерно половину времени. Если он запускается внутри iframe, для iframe требуются сценарии allow-same-origin и allow-scripts. Хотя я не могу быть уверенным в этом, потому что это очень противоречиво. В конечном итоге я решил go использовать геолокацию на основе IP, чтобы избежать головной боли.

Если кто-то может повторить эту проблему, дайте мне знать в комментариях. TLDR: эта ссылка будет отображать ошибку в сафари и ie11, но не chrome.

Код, о котором идет речь:

<!DOCTYPE html>
<html>
  <head>
    <script>  
        navigator.geolocation.getCurrentPosition(function(position){
                document.body.innerHTML = position.coords.latitude;
        }, function(error){
                document.body.innerHTML = error.message;
        });
    </script>
  </head>
  <body>
  </body>
</html>

Проблема: Вкл. chrome, пограничная бета (так в основном chrome) и chrome на android, этот код будет успешным и выведет широту ваших устройств на страницу. В Safari, safari для ios и IE11 произойдет сбой с сообщением «Этот сайт не имеет разрешения на использование API геолокации».

Я предполагаю, что это не относится к пользователю, предоставляющему разрешение на доступ к данным о местоположении, но я все равно проверил это. Похоже, это не так, потому что он работает в одном браузере, а не в другом на том же устройстве. В моем примере это работает в chrome, но не в ie11 на том же компьютере windows 10. Я также попросил коллегу подтвердить то же самое, он работает в chrome, но не в сафари на его ма c.

Это заставляет меня думать, что это проблема домена, но почему это работает в одном браузере и не другой? После множества поисков в Google лучший ответ, который я могу найти, заключается в том, что это проблема SSL, но если вы наберете go - https://developers.google.com/maps/documentation/javascript/geolocation, вы увидите, что даже google.com сталкивается с той же проблемой. Так что я думаю, что это исключает. Вы даже можете попробовать это на собственном сайте w3schools https://www.w3schools.com/html/html5_geolocation.asp

Google, конечно, здесь не вводит, потому что навигатор является продуктом html5

1 Ответ

1 голос
/ 03 февраля 2020

Я не могу воспроизвести проблему в IE 11. Я протестировал ссылки Google и w3schools в IE 11, и они попросили разрешения для определения местоположения и могут показать местоположение, если я позволю. Я также попробовал предоставленный вами фрагмент кода, и он вывел позицию в IE 11 и Chrome.

. Вы сняли отметку "Никогда не разрешать веб-сайтам запрашивать ваше физическое местоположение" коробка в IE 11? Кроме того, я также нашел аналогичную ветку , и вы также можете сослаться на решение в ней.

И в вашем посте, кажется, вы нашли решение. Я полагаю, что вы также можете поставить свое решение в качестве ответа и принять лучший ответ в качестве принятого ответа. Это может помочь другим членам сообщества в будущем в подобных вопросах.

...