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

获取用户地理位置时出现「The permission was revoked」错误怎么办?

解决「The permission was revoked」地理位置权限错误的方案

核心原因

该错误表明用户曾授予过地理位置权限,但后续在浏览器设置中主动撤销了权限,导致代码再次请求位置时被拒绝。

具体解决方案

  • 针对性提示用户恢复权限
    优化errorLocation函数,通过错误码和信息精准判断权限撤销场景,引导用户手动恢复:

    let errorLocation = (error) => {
        if (error.code === error.PERMISSION_DENIED && error.message.includes("revoked")) {
            alert("地理位置权限已被撤销,请在浏览器设置中重新允许本网站获取您的位置");
        } else {
            console.log(error);
        }
    }
    
  • 提前检测权限状态
    利用浏览器Permissions API预先判断权限状态,避免直接触发错误:

    async function checkAndGetLocation() {
        try {
            const permissionStatus = await navigator.permissions.query({ name: 'geolocation' });
            if (permissionStatus.state === 'denied') {
                alert("地理位置权限已被拒绝,请在浏览器设置中开启");
            } else {
                getLocation();
            }
        } catch (e) {
            console.log("无法检测权限状态,将尝试直接请求位置");
            getLocation();
        }
    }
    

    将原点击事件绑定到checkAndGetLocation,替代直接调用getLocation。

  • 统一错误处理逻辑
    基于错误码做分场景处理,兼容不同浏览器的错误表现:

    let errorLocation = (error) => {
        switch(error.code) {
            case error.PERMISSION_DENIED:
                alert("无法获取地理位置权限,请检查浏览器设置");
                break;
            case error.POSITION_UNAVAILABLE:
                alert("当前无法获取位置信息");
                break;
            case error.TIMEOUT:
                alert("获取位置请求超时");
                break;
            default:
                console.log(error);
        }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:16:00