2015-10-05 2 views
1

Работает на html5 геолокации.html5 геолокация не работает на браузере Safari

проверено на мозилла, хром, IE. работая над ними, но не работая на сафари. протестирована на сафари (8.0.5) на макинтош, сафари (5,1) на окнах

просто удар URL

http://www.w3schools.com/html/html5_geolocation.asp 

ИЛИ

http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation 

    <!DOCTYPE html> 
<html> 
<body> 

<p>Click the button to get your coordinates.</p> 

<button onclick="getLocation()">Try It</button> 

<p id="demo"></p> 

<script> 
var x = document.getElementById("demo"); 

function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showPosition); 
    } else { 
     x.innerHTML = "Geolocation is not supported by this browser."; 
    } 
} 

function showPosition(position) { 
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
} 
</script> 

</body> 
</html> 

дает всплывающее окно Разрешить/Disallow, но ничего не делает после того, как разрешая это. И я тестировал сафари на Mac, подключенном к Wi-Fi. Но не для ноутбука на Wi-Fi и LAN тоже.

+0

Если возможно, вы можете устранить эту проблему, взяв машину, на которой вы тестируете, пытаясь подключить Wi-Fi из другой сети в другом месте? Например, попробуйте его из общедоступной точки доступа Wi-Fi, если сможете. – sideshowbarker

+0

К сожалению, когда Safari делает это, кажется, что нет полезного способа программно получить информацию о причине сбоя (например, если это так, потому что машина использует Ethernet-соединение, эта деталь не отображается от Safari в любом случае вы можете добраться до). Но в этом случае вы должны попробовать другие веб-приложения, которые используют API геолокации (например, демонстрационные приложения на обучающих сайтах в Интернете) и посмотреть, не попадают ли они в Safari в вашей среде (они почти наверняка будут). В этом случае вы ничего не можете поделать, чтобы исправить это. – sideshowbarker

+0

@sideshowbarker спасибо за ваше предложение :), я проверил сафари на Mac, связанном с Wi-Fi, там он работает, но не для ноутбука на Wi-Fi и LAN тоже. – Kamini

ответ

3

связанные с wi-fi или over cable network?

Кажется, что сафари имеет проблемы, когда вы не подключены к Wi-Fi.

Источник

Geolocation not workin on Safari 5.x on Windows 7/XP

Geolocation in Safari 5

+0

@ParanOa пытался с обоими, но получал такую ​​же проблему. – Kamini

+0

@ Kamini вы уверены, что вы протестировали в Safari с включенным Wi-Fi? С отключенным сетевым кабелем? Поскольку другие ответы StackOverlfow, которые приводятся здесь, показывают, что другие люди столкнулись с той же самой проблемой, о которой вы сообщили, но только тогда, когда они используются «проводным» (ethernet) соединением (в этом случае кажется, что Safari иногда или всегда просто возвращает ошибка, а не попытка определить местоположение). – sideshowbarker

+0

@ParanOa Привет, он работает для -> сафари на MAc с wi-fi. Но не для -> сафари на Windows с Wi-Fi. – Kamini

4

На примере в этом вопросе, ниже приводится полный рабочий фрагмент кода:

<p id=demo> 
<script> 
var x = document.getElementById("demo"); 
function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showPosition); 
    } else { 
     x.innerHTML = "Geolocation is not supported by this browser."; 
    } 
} 
function showPosition(position) { 
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
} 
getLocation() 
</script> 

Я проверил, что в Safari в моем окружении и он работает так, как ожидалось. Фактический пример в вопросе неполный, поэтому он никогда не сделает ничего, как есть, сам по себе. Поэтому трудно понять, что могло бы работать в Mozilla, Chrome и IE, не видя полного кода.

Если выше фрагмент кода все еще не работает для вас в вашем Safari, пожалуйста, откройте в Safari веб-инспектор (например, из Разработка меню или нажав правой кнопкой мыши на странице и выбрав Осмотреть элемент), и перейдите на вкладку Console и проверьте, какие ошибки были зарегистрированы.

В настоящем время, насколько фрагмент кода, просто быть совершенно ясно, некоторые основные моменты отметить:

  • скрипт должен фактически вызвать getLocation() функции (а не только определить его)
  • документа фактически должны иметь id=demo элемент
  • сценарий должен быть помещен после id=demo элемента (если поместить вызов getLocation() в, например, head документа, это не будет работать, потому что он будет работать до id=demo существует в DOM)

Также, общее примечание: никогда не используйте w3schools.com для чего-либо. Это неряшливо и крайне ненадежно и очень плохо поддерживается. Вместо этого используйте MDN. Например, у MDN есть очень хорошая страница Using geolocation, с complete code for a good live example.

+0

Спасибо за ваш ответ @sideshowbarker. Я обновил код, а также проверил пример MDN в Safari на Mac и Windows, но дал сообщение «Не удалось получить ваше местоположение». пожалуйста помоги. – Kamini

0

К сожалению, Apple не обслуживает данные геолокации по HTTP-соединениям. Для доступа к геолокации клиента в Safari вам понадобится HTTPS.

Смежные вопросы