You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已允许位置权限,调用Geolocation API仍报Permission was revoked错误求助

问题排查与解决方案

1. 修复代码中的事件参数错误

你的点击回调函数没有接收event参数,导致event.preventDefault()会抛出ReferenceError,中断后续的地理定位请求,这很可能是你看到"Permission was revoked"错误的核心原因。修改后的代码如下:

askLocation.addEventListener("click", (event) => { // 补充event参数
  event.preventDefault();
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(
      (position) => {
        const pos = {
          lat: position.coords.latitude,
          lng: position.coords.longitude,
        };
        console.log(pos);
      },
      (e) => {
        // 打印详细错误信息,便于精准排查
        console.log(`错误代码:${e.code},错误消息:${e.message}`);
        console.log("error");
      }
    );
  } else {
    console.log("无法访问你的位置");
  }
});

2. 验证浏览器权限的实际状态

即便你手动设置了允许,也可以通过代码确认当前权限状态,在点击事件外添加以下代码:

navigator.permissions.query({ name: 'geolocation' }).then(permissionStatus => {
  console.log('当前地理定位权限状态:', permissionStatus.state);
  // 监听权限变化,实时掌握状态更新
  permissionStatus.addEventListener('change', () => {
    console.log('权限状态变更为:', permissionStatus.state);
  });
});

如果输出为granted,说明权限确实处于允许状态;如果是denied或prompt,则需要重新在浏览器设置中开启权限。

3. 确保阻止a标签默认跳转

event.preventDefault()必须正确执行,阻止a标签的页面跳转行为——一旦页面刷新,正在进行的地理定位请求会被强制终止,也可能触发类似"权限被撤销"的错误提示。

内容的提问来源于stack exchange,提问作者Zenlyn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 15:46:10