HTML 5 геолокация приглашение в Chrome


только начинаю входить в HTML 5 и тестировать геолокацию...пока что нравится. Хотя я немного ударил лежачий полицейский...когда я пытаюсь получить свое географическое местоположение, chrome автоматически блокирует страницу от получения моего местоположения. Это не происходит на других сайтах, таких как сайт ниже:

http://html5demos.com/geo

скрипты, которые я использую:

<script type="text/javascript" JavaScript" SRC="geo.js"></script>   
<script type="text/javascript" JavaScript" SRC="Utility.js"></script> 
<script type="text/javascript" JavaScript" SRC="jquery.js"></script> 
<script type="text/javascript" JavaScript" SRC="modernizr.js"></script>  

function get_location() {

        if (geo_position_js.init()) {
            geo_position_js.getCurrentPosition(show_map, handle_error);
        }

    }
    function show_map(position) {
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;

        alert("lat:" + latitude + " long:" + longitude);


    }
    function handle_error(err) {
        alert(err.code);
        if (err.code == 1) {
            // user said no!
        }
    }

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(show_map, handle_error);
    } else {
        error('not supported');
    }

Я тестирую это из локального каталога на моем машина, так что на самом деле нет "домена", как "http://whatever.com/mytestpage.html вот почему я не получаю подсказок? Если да, то можно ли заставить browswer запросить разрешение на получение геолокации пользователя и возможно ли это в моем сценарии?

8 67

8 ответов:

в Chrome есть какое-то ограничение безопасности для использования геолокации из file:/// URI, хотя, к сожалению, он, похоже, не записывает никаких ошибок, чтобы указать на это. Он будет работать с локального веб-сервера. Если у вас установлен python, попробуйте открыть командную строку в каталоге, где находятся ваши тестовые файлы, и введите команду:

python -m SimpleHTTPServer

Он должен запустить веб-сервер на порту 8000 (может быть что-то еще, но он скажет вам в консоли какой порт он слушает), затем перейдите к http://localhost:8000/mytestpage.HTML-код

Если у вас нет python, в Ruby есть эквивалентные модули, или Visual Web Developer Express поставляется со встроенным локальным веб-сервером.

ничего из вышеперечисленного мне не помогло.

после небольшого исследования я обнаружил, что по состоянию на M50 (апрель 2016) -Chrome теперь требует безопасного происхождения (например, HTTPS) для геолокации.

устаревшие функции на небезопасных источниках

хост " localhost "является специальным b/c его"потенциально безопасным". При развертывании на компьютере разработчика ошибки могут не отображаться.

Как уже упоминалось в ответе robertc, Chrome блокирует определенные функции, такие как геолокация с локальными файлами. Более простой альтернативой настройке собственного веб-сервера было бы просто запустите Chrome с параметром--allow-file-access-from-files. Затем вы можете использовать геолокацию, если вы не отключили ее в своих настройках.

убедитесь, что он не заблокирован в настройках

http://www.howtogeek.com/howto/16404/how-to-disable-the-new-geolocation-feature-in-google-chrome/

Если вы размещаете за сервером и все еще сталкиваетесь с проблемами: попробуйте изменить localhost до 127.0.0.1 например http://localhost:8080/ до http://127.0.0.1:8080/

проблема, с которой я столкнулся, заключалась в том, что я обслуживал сайт с использованием apache tomcat в среде Eclipse IDE (eclipse luna).

для проверки моего здравомыслия я использовал Реми Шарпа демонстрация: https://github.com/remy/html5demos/blob/eae156ca2e35efbc648c381222fac20d821df494/demos/geo.html

и получал ошибку после внесения незначительных настроек в функцию ошибки, несмотря на размещение кода на сервере (работал только в firefox и не работал в chrome и safari):

"пользователю отказано в геолокации"

Я сделал следующие изменения, чтобы получить более подробное сообщение об ошибке:

function error(msg) {
  var s = document.querySelector('#status');
  msg = msg.message ? msg.message : msg; //add this line
  s.innerHTML = typeof msg == 'string' ? msg : "failed";
  s.className = 'fail';

  // console.log(arguments);
}

сбой в internet explorer за virtualbox IE10 на http://10.0.2.2:8080:

"текущее местоположение не может быть определено"

для легкого решения проблемы просто скопируйте HTML-файл в какой-нибудь облачный ресурс, например Dropbox, и используйте общую ссылку в своем браузере. Простой.

самый простой способ-нажать на область слева от адресной строки и изменить настройки местоположения там. Это позволяет установить параметры местоположения даже для file:///

enter image description here

У меня тоже была эта проблема, когда я пробовал GELOCATION API. Затем я запустил IIS express через visual studio, а затем получил доступ к странице, и он работал без каких-либо проблем во всех браузерах.