来自 3rd 方脚本的 html5 地理定位权限

Posted

技术标签:

【中文标题】来自 3rd 方脚本的 html5 地理定位权限【英文标题】:html5 geolocation permissions from 3rd party script 【发布时间】:2012-04-24 03:11:36 【问题描述】:

我正在创建一个浏览器扩展程序,将一些 javascript 注入某些网站。

脚本的功能需要知道用户是否为指定站点启用了地理定位。到目前为止,我只看到示例 javascript 请求站点上的用户许可,然后决定做什么。

为了尽可能不打扰用户,我想了解用户是否已经允许网站使用其地理位置,如果允许,请使用该信息,否则执行不需要它的代码. html5 geolocation api中是否有任何功能可以让我这样做?

【问题讨论】:

【参考方案1】:

首先,Geolocation 不是 HTML5 的一部分,它是 W3C 规范。

其次,据我所知,没有办法做到这一点。快速查看W3C Geolocation Specification 并没有发现任何信息。

我建议只是尝试通过 Geolocation 获取他们的位置,如果它有效,那么您可以假设已授予权限,如果没有运行不需要 API 的代码。

我知道你不想明确征求用户的许可,但它只会是一次,所以你也可以。

【讨论】:

【参考方案2】:

据我所知,目前还没有这个功能,也没有听说过,所以你可能要等很久……

【讨论】:

【参考方案3】:

现在似乎有一个“权限 API”,可让您查看已授予网站的权限。

// Check for Geolocation API permissions              
navigator.permissions.query(name:'geolocation')
    .then(function(permissionStatus)   
        console.log('geolocation permission state is ', permissionStatus.state);

        permissionStatus.onchange = function()   
            console.log('geolocation permission state has changed to ', this.state);
    ;
);

https://developers.google.com/web/updates/2015/04/permissions-api-for-the-web

但是,目前它在 Chrome 和 Firefox 之外还没有得到非常广泛的支持:http://caniuse.com/#feat=permissions-api

【讨论】:

以上是关于来自 3rd 方脚本的 html5 地理定位权限的主要内容,如果未能解决你的问题,请参考以下文章

HTML5调用百度地图API进行地理定位实例

HTML5 地理定位精度 Android 与 iOS 非常不同

HTML5——拖放 地理定位 视频 音频 新的input类型

HTML5地理定位中的经纬度半径

防止来自 3rd 方组件的异常使整个应用程序崩溃

Nuxt 在哪里安装 3rd 方脚本?