有没有一种方法可以捕获单击地理位置确认窗口的关闭按钮时触发的事件?

时间:2018-12-23 17:25:04

标签: javascript jquery internet-explorer geolocation confirmation

我们的代码向浏览器发出了Geolocation请求,IE会显示确认弹出窗口供用户选择选项。如果用户单击窗口上的十字[X]按钮,则不会发生任何事情。有没有办法捕获事件?

enter image description here

3 个答案:

答案 0 :(得分:0)

以下脚本在页面加载时启动,并要求用户使用其位置。我只是从documentation example中添加了一小段代码来检查错误代码-错误代码1表示权限被拒绝。

  

有多个原因可能会导致拒绝权限,例如,在此处的代码段中,返回了错误代码1,但由于Stack Overflow拒绝通过策略执行地理定位功能,这与JSFiddle类似

您可以改用显示更精确的错误消息。不同的浏览器有稍微不同的错误消息:

  • “用户拒绝地理位置定位”(Safari和Chrome)
  • “用户拒绝地理位置提示”(Firefox)。

您可以改为对错误消息使用以下检查,而不是代码:

if ( err.message == "User denied Geolocation" || err.message == "User denied geolocation prompt" ) {

  // Your code goes here

}

JavaScript示例

Please see here

var options = {
  enableHighAccuracy: true,
  timeout: 5000,
  maximumAge: 0
};


function success(pos) {
  var crd = pos.coords;

  console.log('Your current position is:');
  console.log(`Latitude : ${crd.latitude}`);
  console.log(`Longitude: ${crd.longitude}`);
  console.log(`More or less ${crd.accuracy} meters.`);

}

function error(err) {

  // Check for permission denied error
  if (err.code == 1) {

    alert("Permission denied to use location");
    // Add your code here

  } 

  console.warn(`ERROR(${err.code}): ${err.message}`);


}

navigator.geolocation.getCurrentPosition(success, error, options);

答案 1 :(得分:0)

实际上,Oliver意味着单击X按钮之前,您已经能够获得错误消息。在navigator.geolocation.getCurrentPosition未能获取位置信息后,错误提示错误消息。您可以找到“更改”窗口,然后单击“ X”按钮,如果找不到位置,则可以添加代码。enter image description here

答案 2 :(得分:0)

我们得到了这个双重确认,即IE不支持捕获此事件,对于由此带来的不便,我们深表歉意。 同时,不确定以下变通办法是否可以为您提供帮助。 使用“ a = navigator.geolocation.getCurrentPosition(success);” 代替 “ navigator.geolocation.getCurrentPosition(成功,错误,选项);”然后手动检查a是否为空值,如果为空,则表示客户尚未准备好共享位置。这样可以吗?

谢谢