以前のhtml5ジオロケーション許可が付与されているかどうかをテストする方法があるかどうか誰かが知っていますか?
ページの許可がすでに与えられていない限り、ジオロケーションを要求しないスクリプトを作成しようとしています。本質的にhtml5である必要はありません。他のフレームワークも問題ありません。
以前のhtml5ジオロケーション許可が付与されているかどうかをテストする方法があるかどうか誰かが知っていますか?
ページの許可がすでに与えられていない限り、ジオロケーションを要求しないスクリプトを作成しようとしています。本質的にhtml5である必要はありません。他のフレームワークも問題ありません。
最初の部分は、少なくともChrome43以降とFirefox46以降で実際に質問に答えます(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 */
})
}
})
あなたができる最善のことは、これを自分で追跡することです...
// 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();
Geolocation API仕様によると、このための関数はありません。ブラウザの設定に保存するオプションでさえ、コードにプッシュされません。
それが本当に重要であり、これを本当に意識する必要がある場合は、すべての一般的なブラウザ用のブラウザアドオンを作成し、ユーザーにインストールするように依頼する必要があります。しかし、私はそれを疑うことはありません。