2012-07-08 30 views
0

好了,所以我有如下代碼:瀏覽器的地理定位:確定以前的權限

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

我可以把這對頁面加載,如果權限被拒絕,我會隱藏按鈕和功能依靠地理信息。

但是,我不想要求pageload的權限,但只有在用戶選擇點擊其中一個geoloc按鈕時才需要。

因此,在這種情況下,假設用戶到達我的頁面,之前已決定拒絕對地理定位API的訪問,可以告訴該權限先前已被拒絕,以便我可以隱藏按鈕而無需等到他們再次點擊其中一個按鈕?

回答

0

您的意思是拒絕訪問另一個網站,或以前在您的網站上?

如果前者,爲什麼假設你受制於這個決定?也就是說,不要擔心,無論如何再問一次。

如果是後者,您可能應該在您的網站上存儲用戶會話持續時間的決定。如果您使用服務器會話或使用簡單的Cookie,則可以在服務器端執行此操作。

+0

後者......用cookie解決方案,它可以減輕問題,但如果存儲在瀏覽器中的決定超出存儲在cookie中的決定,它仍然存在。 – EoghanM 2012-07-08 08:56:45

+0

我接受這個答案,因爲它是第一個發佈的。 這似乎是一個省略查詢權限與提示權限相混淆的規範。 – EoghanM 2012-07-08 15:26:40

0

您可以將結果存儲在瀏覽器中,例如使用LocalStorage或cookie。但是,如果用戶第一次拒絕訪問並不意味着他下次會這樣做。但是,如果你隱藏或禁用按鈕,即使他想要,他也不能使用該功能。現在,如果他拒絕連續10次或者這樣的數字,那會更有意義。

+0

使用Chrome進行測試:首次調用getCurrentPosition會彈出權限對話框,以顯式詢問用戶。隨後的電話默默地拒絕了這個許可,所以用戶沒有機會改變她的決定。 – EoghanM 2012-07-08 09:06:19

+0

不同的瀏覽器意味着不同的客戶端行爲。即使在Chrome中,用戶也可以進入設置並重置權限以再次得到提示。 – Maurice 2012-07-08 09:14:36

+0

是的,我也注意到Chrome會在地址欄的右側放置一個小圖標,它可以直接訪問此設置。 – EoghanM 2012-07-08 10:22:45