Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript navigator.geolocation.getCurrentPosition用户不允许';第一次尝试成功或失败都是不可能的_Javascript_Html - Fatal编程技术网

Javascript navigator.geolocation.getCurrentPosition用户不允许';第一次尝试成功或失败都是不可能的

Javascript navigator.geolocation.getCurrentPosition用户不允许';第一次尝试成功或失败都是不可能的,javascript,html,Javascript,Html,我对地理定位api有一个奇怪的问题。目前我在chrome中注意到了这一点,但我认为它也会在其他浏览器中出现 问题是,当我第一次使用getCurrentPosition时,浏览器的“允许”按钮就会出现。如果我只是等待一段较长的时间,比如说30秒,然后按allow。未触发失败回调的成功 这是我正在使用的代码 if(navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(_position) {

我对地理定位api有一个奇怪的问题。目前我在chrome中注意到了这一点,但我认为它也会在其他浏览器中出现

问题是,当我第一次使用getCurrentPosition时,浏览器的“允许”按钮就会出现。如果我只是等待一段较长的时间,比如说30秒,然后按allow。未触发失败回调的成功

这是我正在使用的代码

if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(_position) {
        console.log("success"); 
        console.log(_position);
    }, 
    function(_error) { 
        console.log("failed"); 
        console.log(_error); 
    }, {timeout: 5000});
}else{
    console.log("not supported");
}
我还尝试了{maximumAge:60000,timeout:5000,enableHighAccurance:true}

如果用户允许,地理定位在第二个时间槽工作。只是第一次,如果他们花太长时间按下“允许”按钮,则不会触发回调

我想这可能是因为如果他们在超时时间内不按allow,那么就会发生此错误,但事实似乎并非如此

当我独自尝试时,每次都能奏效。我所能想到的是,它找不到回调。什么样的情况会导致这种情况发生

编辑:

我只是在错误发生时隔离。设法让它在JSFIDLE中发生。转到chrome中的设置,清除JSFIDLE的位置权限。关闭浏览器并再次加载JSFIDLE。单击getlocation等待一点(不要认为等待多长时间很重要),然后单击allow。什么也不会发生

现在返回并删除JSFIDLE的权限,但这次不要关闭浏览器。单击“地理定位”,等待,然后单击“允许”,它就可以工作了。第一次似乎不起作用