我正在创建一个浏览器扩展程序,将一些 javascript 注入某些网站。
该脚本的功能需要知道用户是否为指定站点启用了地理定位。到目前为止,我只看到示例 javascript 请求站点上的用户许可,然后决定做什么。
为了尽可能不打扰用户,我想了解用户是否已经允许该站点使用其地理位置,如果有,请使用该信息,否则执行不需要它的代码。html5 geolocation api中是否有任何功能可以让我这样做?
我正在创建一个浏览器扩展程序,将一些 javascript 注入某些网站。
该脚本的功能需要知道用户是否为指定站点启用了地理定位。到目前为止,我只看到示例 javascript 请求站点上的用户许可,然后决定做什么。
为了尽可能不打扰用户,我想了解用户是否已经允许该站点使用其地理位置,如果有,请使用该信息,否则执行不需要它的代码。html5 geolocation api中是否有任何功能可以让我这样做?
首先,Geolocation不是HTML5 的一部分,它是 W3C 规范。
其次,据我所知,没有办法做到这一点。快速浏览一下W3C 地理定位规范并没有发现任何问题。
我建议只是尝试通过 Geolocation 获取他们的位置,如果它有效,那么您可以假设已授予权限,如果没有运行不需要 API 的代码。
我知道您不想明确询问用户的许可,但它只会是一次,所以您也可以。
据我所知,没有这样的功能,我从来没有听说过,所以你可能要等待很长时间......
看起来现在有一个“权限 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