Html navigator.geolocation的可用性问题:如何知道用户是否被询问位置?

Html navigator.geolocation的可用性问题:如何知道用户是否被询问位置?,html,geolocation,Html,Geolocation,HTML的navigator.geolocation是否有“当前询问用户是否将共享其位置”的事件处理程序 我想显示一些文本,指示用户共享他们的位置,当且仅当他们实际被要求共享他们的位置时 目前我有这个代码,但它是坏的 第一次看起来很流畅,但第二次(当浏览器知道这是一个受信任的站点,因此不要求用户共享其位置时),“共享您的位置”在页面加载时快速闪烁,然后消失在地图后面 // map.js function gpsSuccess() { // We have a l

HTML的
navigator.geolocation
是否有“当前询问用户是否将共享其位置”的事件处理程序

我想显示一些文本,指示用户共享他们的位置,当且仅当他们实际被要求共享他们的位置时

目前我有这个代码,但它是坏的

第一次看起来很流畅,但第二次(当浏览器知道这是一个受信任的站点,因此不要求用户共享其位置时),“共享您的位置”在页面加载时快速闪烁,然后消失在地图后面

    // map.js
    function gpsSuccess() { 
        // We have a location - although we don't know whether this is 
        // because the user has already agreed to share with this domain,
        // or whether they have just this second been asked. 
        $('#sharelocation').hide();
        // load map, etc
    }
    if (navigator.geolocation) {
        watchId = navigator.geolocation.watchPosition(gpsSuccess, gpsFail);
    }   

    // map.html
    <div id="sharelocation">Share your location</div>
    <div id="map" class="hidden"></div>
//map.js
函数gpssAccess(){
//我们有一个位置,虽然我们不知道这是否是
//因为用户已经同意与此域共享,
//或者他们是否就在这一秒被问到。
$('#sharelocation').hide();
//装载图等
}
if(导航器.地理位置){
watchId=navigator.geolocation.watchPosition(gpssucess,gpsFail);
}   
//map.html
共享您的位置

<> P>在页面的正文中给用户一些指令的平滑方法,当且仅当它们实际上被要求共享它们的位置时,

< P>除非发生失败回调,否则我不考虑显示“共享位置”消息。

function gpsFail() {
  $('#sharelocation').show();
}

您可以在SealPosi定位块中包含一个消息,说明如何启用位置共享、您将如何处理这些信息等。

< P>除非发生失败回调,否则我不考虑显示“共享位置”消息。< /P>
function gpsFail() {
  $('#sharelocation').show();
}

您可以在sharelocation块中包含一条消息,解释如何启用位置共享、如何处理信息等。

听起来您可能只是因为getCurrentPosition和回调之间的短暂延迟而遇到了时间问题。如果你把演出推迟一秒钟左右怎么办?(我不知道特定于jquery的方法是什么)保留对任务的引用,以便在gpssAccess中可以使用它调用clearTimeout。

听起来您可能只是因为getCurrentPosition和回调之间的短暂延迟而出现了时间问题。如果你把演出推迟一秒钟左右怎么办?(我不知道特定于jquery的方法是什么)保留对任务的引用,这样在GPSSucess中就可以调用clearTimeout了。

恐怕这不起作用-至少在Chrome上,当浏览器仍在等待用户响应时,失败回调不会执行。恐怕这不起作用-至少在Chrome上是这样,浏览器仍在等待用户响应时,不会执行失败回调。