РЕДАКТИРОВАТЬ: Симптомы этой проблемы противоречивы. Сегодня я попробовал это снова, и вдруг это работает ... иногда. Если я перефразирую 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