HTML 5 геолокация приглашение в Chrome
только начинаю входить в HTML 5 и тестировать геолокацию...пока что нравится. Хотя я немного ударил лежачий полицейский...когда я пытаюсь получить свое географическое местоположение, chrome автоматически блокирует страницу от получения моего местоположения. Это не происходит на других сайтах, таких как сайт ниже:
скрипты, которые я использую:
<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 ответов:
в 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, и используйте общую ссылку в своем браузере. Простой.