猿问

HTML5 地理定位不会在 Safari 浏览器上提示输入位置

我正在尝试使用非常简单的代码让 Safari 提示我输入位置。我正在运行 Ubuntu 的 PC 上远程操作Macbook mini。在 Macbook 环境中,下面的代码在 Firefox 和 Chrome 上运行得很好。但在 Safari 上什么也没有发生,我没有得到提示或什么也没有。我希望我在控制台中收到任何错误,但该功能根本不触发。什么都没发生。没什么。有人遇到过这样的问题吗?

如果我去W3Schools上尝试一下,也会发生同样的事情,这意味着我点击“尝试”,但没有任何反应。但它在所有其他浏览器中运行良好。

代码

<!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>


叮当猫咪
浏览 86回答 2
2回答

翻阅古今

转到 Finder -> Apple -> 系统偏好设置 -> 安全和隐私 -> 隐私,然后将 Safari 添加到白名单。尝试一下是否有效。或者在 Safari 中,选择 Safari > 首选项。单击“首选项”窗口中的“隐私”图标。取消选择“拒绝而不提示”选项。

哆啦的时光机

我通过处理错误解决了我的问题。Safari 和 ios 似乎需要错误处理才能工作。这有效:<!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() {&nbsp; if (navigator.geolocation) {&nbsp; &nbsp; navigator.geolocation.getCurrentPosition(showPosition, showError);&nbsp; } else {&nbsp;&nbsp; &nbsp; x.innerHTML = "Geolocation is not supported by this browser.";&nbsp; }}function showPosition(position) {&nbsp; x.innerHTML = "Latitude: " + position.coords.latitude +&nbsp;&nbsp; "<br>Longitude: " + position.coords.longitude;}function showError(error) {&nbsp; switch(error.code) {&nbsp; &nbsp; case error.PERMISSION_DENIED:&nbsp; &nbsp; &nbsp; x.innerHTML = "User denied the request for Geolocation."&nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; case error.POSITION_UNAVAILABLE:&nbsp; &nbsp; &nbsp; x.innerHTML = "Location information is unavailable."&nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; case error.TIMEOUT:&nbsp; &nbsp; &nbsp; x.innerHTML = "The request to get user location timed out."&nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; case error.UNKNOWN_ERROR:&nbsp; &nbsp; &nbsp; x.innerHTML = "An unknown error occurred."&nbsp; &nbsp; &nbsp; break;&nbsp; }}</script></body></html>
随时随地看视频慕课网APP

相关分类

Html5
我要回答