用户在javascript中阻止访问后请求位置坐标

d-_*_*_-b 3 javascript html5 google-chrome geolocation progressive-web-apps

如果他们过去阻止了我的请求,我该如何提示用户在javascript中的地理位置?(使用navigator.geolocation.getCurrentPosition)。

例如,我的Web应用程序需要定位服务,而用户不小心单击了“阻止”,或者他们改变了主意。我该怎么做才能再次提示他们?

Adi*_*s03 7

如@ matthew-shwery所述,您不能更改权限。
最好的办法是检查权限,并通知用户该权限被拒绝

navigator.permissions.query({
     name: 'geolocation'
 }).then(function(result) {
     if (result.state == 'granted') {
         report(result.state);
         geoBtn.style.display = 'none';
     } else if (result.state == 'prompt') {
         report(result.state);
         geoBtn.style.display = 'none';

         navigator.geolocation.getCurrentPosition(revealPosition, positionDenied, geoSettings);
     } else if (result.state == 'denied') {
         report(result.state);
         geoBtn.style.display = 'inline';
     }
     result.onchange = function() {
         report(result.state);
     }
 });
Run Code Online (Sandbox Code Playgroud)

地理位置文档

  • 在 Chrome 上,您可以将他们定向到其设置页面:“chrome://settings/content/location”。 (3认同)

小智 6

你不能。

用户必须手动管理他们的浏览器设置,因为当拒绝位置权限时,您的站点会被添加到黑名单中。

以下是 Chrome 用户管理其位置权限的说明:https : //support.google.com/chrome/answer/142065?hl=en

  • 我尝试过,可以使用 window.open('chrome://settings/content/location"),给出错误 -> 不允许加载本地资源:chrome://settings/content/location (2认同)