Раздел разрешений навигатора браузера Javascript еще не активирован - PullRequest
0 голосов
/ 10 октября 2018

Есть небольшой фрагмент кода JavaScript, который вызывает navigator.geolocation.

У меня есть оператор if, который работает, чтобы показать широту и долготу, если пользователь разрешает вызов пользователю.Однако раздел else не запущен.

Если я запускаю приведенный ниже код, браузер запрашивает разрешение;если я позволю это, тогда будут показаны координаты.Однако, если я нажму на блок, то ничего не произойдет, даже если есть раздел 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>

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

getCurrentPosition принимает функции success и error.Ссылка: https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition#Example

function errorGettingPosition(positionError) {
  x.innerHTML = "Geolocation is not supported by this browser.";
  document.cookie = 'location=false;path=/form_handler';
}

navigator.geolocation.getCurrentPosition(SavePosition, errorGettingPosition)
0 голосов
/ 10 октября 2018

Этот оператор if-else проверяет, не является ли navigator.geolocation определенным (и даже если вы не хотите, чтобы браузер знал ваше местоположение), следуйте другим ответам, чтобы правильно обработать разрешение

0 голосов
/ 10 октября 2018

Вы не можете использовать else для проверки прав доступа.

Метод навигатора getCurrentPosition принимает обратные вызовы об успешном завершении и об ошибке.Если будет отказано в разрешении, будет вызван обратный вызов ошибки.

if (navigator.geolocation) { // this checks if navigator is supported at all
  navigator.geolocation.getCurrentPosition(console.log, () => {
    console.log('Permission denied')
  });
} else {
  console.log('Geolocation is not supported by this browser.');
}
...