2011-08-20 50 views
0

简单的问题..如果用户选择不允许geolocator弹出,我该如何设置重定向?如果允许和错误我已经涵盖。工作正常。但我不知道如何设置不允许选择。jquery mobile geolocation

function showLocation(position) { 
     var latitude = position.coords.latitude; 
     var longitude = position.coords.longitude; 
     //window.location = "/restaurant/latitude/40.714269/longitude/-74.005972/"; 
     window.location = "/restaurant/"; 
    } 

    function errorHandler(err) { 
     if(err.code == 1) { 
      alert("Error: Can not access!"); 
     }else if(err.code == 2) { 
      alert("Error: Position is unavailable!"); 
     } 
    } 
    function getLocation(){ 

     if(navigator.geolocation){ 
      // timeout at 60000 milliseconds (60 seconds) 
      var options = {timeout:60000}; 
      navigator.geolocation.getCurrentPosition(showLocation, errorHandler, options); 
     }else{ 
      alert("Sorry, browser does not support geolocation!"); 
     } 
    } 

回答

1

按照W3C Geolocation API spec,错误处理程序应与失败的合适的理由被调用。这包括用户拒绝的权限。

不幸的是,它似乎有一个bug/feature in Firefox如果您从弹出框中选择Not Now,则什么都不会发生 - 错误处理程序不会被调用。但是,如果您选择Never Share,您的错误处理程序确实会被调用,并且您发布的代码会显示为Error: Can not access!

在Chrome中没有第三个选项(只有AllowDeny),而且事情似乎在那里工作得很好。

另见How to detect negative user response for geolocation其中提出了一个解决方案(涉及使用超时检测出什么都没有发生和治疗它一样的权限被拒绝)

0

我看到你已经尝试设置window.location。为什么这不适合你?

了window.location =“../nonGeoLocationPage.html”

+0

这工作。我不知道没有访问/错误1实际上是不允许选择.. – user154107