Ste*_*fan 12 javascript w3c-geolocation
我正在构建一个客户端将在其页面上安装的小脚本.地理位置不是必需的,但如果它存在,那将是很好的.有没有办法让我检查客户页面是否已请求地理定位信息,如果用户选择允许获取lat&lon而不创建另一个提示?
End*_*ess 20
使用地理位置API是不可能的,但可以使用新的权限API
如果你想尝试接收坐标但不想用提示对话框打扰用户,这段代码非常有用,因为坐标不是那么重要,也可以回退到geoIP
function getCoords() {
return new Promise((resolve, reject) =>
navigator.permissions ?
// Permission API is implemented
navigator.permissions.query({
name: 'geolocation'
}).then(permission =>
// is geolocation granted?
permission.state === "granted"
? navigator.geolocation.getCurrentPosition(pos => resolve(pos.coords))
: resolve(null)
) :
// Permission API was not implemented
reject(new Error("Permission API is not supported"))
)
}
getCoords().then(coords => console.log(coords))
Run Code Online (Sandbox Code Playgroud)
如果未授予权限,这将解析为null,如果浏览器不支持某些javascript代码则转换错误,如果已授予,则解析为坐标
我也遇到了同样的问题。经过我的搜索和实验,我终于找到了答案。
您可以添加以下 JS 代码:
navigator.permissions.query({name:'geolocation'}).then(function(result) {
// Will return ['granted', 'prompt', 'denied']
console.log(result.state);
});
Run Code Online (Sandbox Code Playgroud)
然后您可以根据需要使用您的自定义代码。
来源:https ://developer.mozilla.org/en-US/docs/Web/API/Navigator/permissions
您可以通过检查窗口对象来检测该功能是否存在.
if('geolocation' in window){
navigator.geolocation.getCurrentPosition(...);
}
Run Code Online (Sandbox Code Playgroud)
这将导致单个用户提示询问用户是否希望与您的页面共享其位置.
如果浏览器中没有地理定位,则根本不会运行.
在页面会话期间,您可以在不提示的情况下对API进行后续调用.
归档时间: |
|
查看次数: |
12951 次 |
最近记录: |