Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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浏览器导航器权限其他部分未触发_Javascript_Html_Web_Browser_Navigator - Fatal编程技术网

Javascript浏览器导航器权限其他部分未触发

Javascript浏览器导航器权限其他部分未触发,javascript,html,web,browser,navigator,Javascript,Html,Web,Browser,Navigator,有一小段javascript代码,可以调用navigator.geolocation 我有一个if语句,如果用户允许调用,它可以显示纬度和经度。但是,else部分没有运行 如果我运行下面的代码,浏览器会提示我允许;如果我允许,则显示坐标。然而,如果我点击block,即使有else部分,也不会发生任何事情 <body> <br> <p id="ChangeSring">Test</p> <script> var x = doc

有一小段javascript代码,可以调用
navigator.geolocation

我有一个
if
语句,如果用户允许调用,它可以显示纬度和经度。但是,
else
部分没有运行

如果我运行下面的代码,浏览器会提示我允许;如果我允许,则显示坐标。然而,如果我点击block,即使有
else
部分,也不会发生任何事情

<body>
  <br> <p id="ChangeSring">Test</p>
  <script>
  var x = document.getElementById("ChangeSring");
  if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(SavePosition);
  } else { 
      x.innerHTML = "Geolocation is not supported by this browser.";
      document.cookie = 'location=false;path=/form_handler';
  }

  function SavePosition(position) {
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude;
    document.cookie = 'location=true;path=/form_handler';
    document.cookie = 'latitude='+ position.coords.latitude +';path=/form_handler';
    document.cookie = 'longitude='+ position.coords.longitude +';path=/form_handler';
  }
  </script>

  <form action="/form_handler" _lpchecked="1">
    Enter value:
    <input type="text" name="SomeVar"><br>
    <input type="submit" value="search">
  </form>
</body>


测试

var x=document.getElementById(“变更”); if(导航器.地理位置){ navigator.geolocation.getCurrentPosition(SavePosition); }否则{ x、 innerHTML=“此浏览器不支持地理位置。”; document.cookie='location=false;path=/form_handler'; } 功能保存位置(位置){ x、 innerHTML=“纬度:”+position.coords.Latitude+ “
经度:”+position.coords.Longitude; document.cookie='location=true;path=/form_handler'; document.cookie='latitude='+position.coords.latitude+';path=/form_handler'; document.cookie='longitude='+position.coords.longitude+';path=/form_handler'; } 输入值:

您不能使用
else
检查权限

navigator方法接受成功和错误回调。 如果权限被拒绝,将调用错误回调

if(navigator.geolocation){//检查是否支持navigator
navigator.geolocation.getCurrentPosition(console.log,()=>{
console.log('权限被拒绝')
});
}否则{
console.log('此浏览器不支持地理位置');

}
getCurrentPosition执行
成功
错误
功能。 参考:


if else语句正在检查if navigator.geolocation它不是未定义的(即使您不想让浏览器知道您的位置也不是),请按照其他答案正确处理权限

查看控制台日志了吗?有什么有用的吗?我认为只有在浏览器不支持else语句时才会调用它,而不是在被阻止时。
function errorGettingPosition(positionError) {
  x.innerHTML = "Geolocation is not supported by this browser.";
  document.cookie = 'location=false;path=/form_handler';
}

navigator.geolocation.getCurrentPosition(SavePosition, errorGettingPosition)