6

以前のhtml5ジオロケーション許可が付与されているかどうかをテストする方法があるかどうか誰かが知っていますか?

ページの許可がすでに与えられていない限り、ジオロケーションを要求しないスクリプトを作成しようとしています。本質的にhtml5である必要はありません。他のフレームワークも問題ありません。

4

3 に答える 3

10

最初の部分は、少なくとも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 */
        })
    }
})
于 2016-09-08T10:44:54.610 に答える
1

あなたができる最善のことは、これを自分で追跡することです...

// 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();
于 2015-09-24T00:42:59.850 に答える
0

Geolocation API仕様によると、このための関数はありません。ブラウザの設定に保存するオプションでさえ、コードにプッシュされません。

それが本当に重要であり、これを本当に意識する必要がある場合は、すべての一般的なブラウザ用のブラウザアドオンを作成し、ユーザーにインストールするように依頼する必要があります。しかし、私はそれを疑うことはありません。

于 2012-05-18T14:40:23.117 に答える