2012-07-08 3 views
0

좋아 내가있어 코드와 같은 이전의 권한을 결정 다음브라우저 위치 정보 :

navigator.geolocation.getCurrentPosition (
    function (e) { 
     alert('ok'); 
    }, function (e) { 
     alert('denied'); 
    } 
); 

나는 pageload에이 부를 수있는, 그리고 권한이 거부되는 경우, 나는 버튼과 기능을 숨길 수 있습니다 그 geoloc 정보를 사용합니다.

그러나 pageload에 대한 권한을 요청하고 싶지는 않지만 사용자가 geoloc 버튼 중 하나를 클릭하도록 선택한 경우에만 허용합니다.

그래서 이전에 geolocation API에 대한 액세스를 거부하기로 결정한 사용자가 내 페이지에 도착했다고 가정하면 이전에 권한이 거부되었음을 알 수 있으므로 버튼 중 하나를 다시 클릭 할 때까지 기다려야합니까?

답변

0

다른 웹 사이트 또는 이전에 귀하의 웹 사이트에 대한 액세스가 거부되었다는 뜻입니까?

전자의 경우 이전 결정의 대상이 된 이유는 무엇입니까? 즉, 걱정하지 말고 다시 묻습니다.

후자의 경우 사용자 세션 기간 동안 사이트에 대한 결정을 저장해야합니다. 서버 세션을 사용하거나 간단한 쿠키를 사용하는 경우이 서버 측에서 수행 할 수 있습니다.

+0

쿠키 솔루션을 사용하면 문제가 줄어들지 만 브라우저에 저장된 결정이 쿠키에 저장되어있는 결정보다 오래 지속된다면 여전히 존재할 것입니다. – EoghanM

+0

첫 번째 답변이므로이 답변을 수락합니다. 권한을 쿼리하는 것이 사용 권한을 요구하는 것과 충돌하는 것은 사양을 생략 한 것처럼 보입니다. – EoghanM

0

브라우저에 결과를 저장할 수 있습니다 (예 : LocalStorage 또는 쿠키). 그러나 사용자가 처음으로 액세스를 거부 한 경우 다음에 그렇게 할 것이라는 것을 의미하지는 않습니다. 그러나 버튼을 숨기거나 비활성화하면 원하는 경우에도 기능을 사용할 수 없습니다. 이제 10 번이나 연속으로 거부한다면 그 말이 더 합리적 일 것입니다.

+0

Chrome을 사용하여 테스트 : getCurrentPosition에 대한 첫 번째 호출은 권한 대화 상자를 팝업으로 표시하여 사용자에게 명시 적으로 요청합니다. 후속 호출은 자동으로 권한을 거부하므로 사용자는 어쨌든 자신의 결정을 변경할 수있는 기회가 주어지지 않습니다. – EoghanM

+0

다른 브라우저는 다른 클라이언트 측 동작을 의미합니다. 그리고 Chrome을 사용하더라도 사용자는 설정으로 이동하여 권한을 재설정하여 다시 묻는 메시지를 표시 할 수 있습니다. – Maurice

+0

예, Chrome에서 위치 표시 줄의 오른쪽에 작은 아이콘이 표시되어이 설정에 직접 액세스 할 수 있습니다. – EoghanM