为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

叮当猫咪 2024-01-03 14:20:03
我正在尝试使用非常简单的代码让 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>
查看完整描述

2 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

转到 Finder -> Apple -> 系统偏好设置 -> 安全和隐私 -> 隐私,然后将 Safari 添加到白名单。尝试一下是否有效。

或者

在 Safari 中,选择 Safari > 首选项。单击“首选项”窗口中的“隐私”图标。取消选择“拒绝而不提示”选项。


查看完整回答
反对 回复 2024-01-03
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

我通过处理错误解决了我的问题。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() {

  if (navigator.geolocation) {

    navigator.geolocation.getCurrentPosition(showPosition, showError);

  } else { 

    x.innerHTML = "Geolocation is not supported by this browser.";

  }

}


function showPosition(position) {

  x.innerHTML = "Latitude: " + position.coords.latitude + 

  "<br>Longitude: " + position.coords.longitude;

}


function showError(error) {

  switch(error.code) {

    case error.PERMISSION_DENIED:

      x.innerHTML = "User denied the request for Geolocation."

      break;

    case error.POSITION_UNAVAILABLE:

      x.innerHTML = "Location information is unavailable."

      break;

    case error.TIMEOUT:

      x.innerHTML = "The request to get user location timed out."

      break;

    case error.UNKNOWN_ERROR:

      x.innerHTML = "An unknown error occurred."

      break;

  }

}

</script>


</body>

</html>


查看完整回答
反对 回复 2024-01-03
  • 2 回答
  • 0 关注
  • 32 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信