【问题标题】:Test if html5 geolocation permission already has been granted测试是否已授予 html5 地理定位权限
【发布时间】:2012-05-26 03:06:43
【问题描述】:

有谁知道是否有办法测试是否已授予先前的 html5 地理定位权限?

我尝试制作一个不请求地理定位的脚本,除非该页面已获得许可。不一定非得是 html5;其他框架也可以。

【问题讨论】:

标签: javascript html geolocation


【解决方案1】:

第一部分实际上回答了您的问题,至少在 Chrome 43+ 和 Firefox 46+ 上(请参阅https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API):

navigator.permissions &&
navigator.permissions.query({name: 'geolocation'}).then(function(PermissionStatus) {
    if('granted' === PermissionStatus.state) {
        navigator.geolocation.getCurrentPosition(function(geoposition) {
            console.log(geoposition) /* You can use this position without prompting the user if the permission had already been granted */
        })
    }
})

【讨论】:

  • 最佳答案,但在 Safari 中不起作用 navigator.permissions。同样,谢谢!
【解决方案2】:

你能做的最好的就是自己跟踪这个......

// In chrome you can now do this    
navigator.permissions.query({name: 'geolocation'}).then(function(PermissionStatus){
    console.log(PermissionStatus.state) // prompt, granted, denied
    // even listen for changes
    PermissionStatus.onchange = function(){
        console.log(this.state)
    }
})

后备方法:

// initialization
if( sessionStorage.getItem("geo_access") === null ){
    // just assume it is prompt
    sessionStorage.setItem("geo_access", "prompt");
}

function ask(){
    navigator.geolocation.getCurrentPosition(function(){
        sessionStorage.setItem("geo_access", "granted");

    }, function(err){
        if(err.code == 1){ // PERMISSION_DENIED
            sessionStorage.setItem("geo_access", "denied");
        }
        sessionStorage.setItem("geo_access", "prompt");
    });
};

// Then somewhere
ask();

【讨论】:

  • 查看第二条评论问题:我无法控制之前的(或没有)电话。
【解决方案3】:

根据Geolocation API Specification,没有任何功能。 甚至将其保存在浏览器首选项中的选项也不会推送到您的代码中。

如果它真的很重要并且你真的必须意识到这一点,你必须为每个常见的浏览器编写一个浏览器插件并要求用户安装它。但我不会怀疑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    相关资源
    最近更新 更多