【问题标题】:Is there a way to catch the event fired on clicking the close button of geolocation confirmation window?有没有办法捕捉单击地理位置确认窗口的关闭按钮时触发的事件?
【发布时间】:2019-05-23 03:48:24
【问题描述】:

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

【问题讨论】:

标签: javascript jquery internet-explorer geolocation confirmation


【解决方案1】:

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

权限被拒绝的原因有多种,例如在代码 sn-ps 中返回错误代码 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);

【讨论】:

  • 感谢 Oliver 的简短介绍...但是 IE 在单击显示的特定区域(X 按钮)时不会引发任何响应。有什么可以做的吗?
  • 试过你的解决方案,点击右上角的 X 按钮时 IE 没有抛出错误消息
【解决方案2】:

其实 Oliver 的意思是在你点击 X 按钮之前,你已经能够得到错误信息了。 navigator.geolocation.getCurrentPosition 获取位置信息失败后,err 得到错误消息。在点击X按钮之前可以发现alter窗口已经出现,如果获取不到位置可以添加代码。

【讨论】:

  • 谢谢,但是,我真的无法理解您所讨论的重点。我已经尝试了代码并且在关闭按钮上舔了一下 IE 没有抛出任何错误或控制台。有什么我做错了吗。请举例指导。新年快乐
  • X按钮的事件是IE的逻辑代码,javascript无法捕获事件。我可以知道你为什么要捕捉这个事件吗?也许我们可以帮助尝试寻找其他解决方法?
  • 实际上,我们的站点会检查附近的分支机构,并将详细信息填充为其特定的分支机构,当用户尚未准备好共享位置时,我们必须使用默认分支机构进行更新,这在此问题上是不可行的.谢谢 美好的一天
【解决方案3】:

我们再次确认 IE 不支持捕获此事件,对于由此造成的不便,我们深表歉意。 同时,不确定以下解决方法是否可以帮助您。 使用“a = navigator.geolocation.getCurrentPosition(success);” 代替 “navigator.geolocation.getCurrentPosition(成功,错误,选项);”然后手动检查 a 是否为空值,如果为空,则表示客户尚未准备好共享该位置。你可以吗?

谢谢

【讨论】:

  • 还有什么需要帮助的吗?
猜你喜欢
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多