重新思考權限請求:<geolocation>元素讓使用者搞清楚狀況後主動允許

很多網站一打開就會跳「權限請求」的視窗,使用者第一個反應通常是:「為什麼要我的位置」、「我連內容都還沒看為何就要我訂閱」、「為什麼要我的xx存取權」,結果就是使用者直接拒絕。

Chrome 144 新增的 <geolocation>就是在處理這類問題:在使用者理解網站功能後,讓權限請求從網站方變成使用者自己主動要求。

權限要求的UX改善

<geolocation> 在做什麼

  • 一定要使用者點擊後才會問權限
    不是 JavaScript 自己跳視窗,使用者已有心理準備。
  • 請求發生在有情境的地方
    例如「找附近店家」按鈕,點了才要位置,很直覺。
  • 之前拒絕過,也還有回頭路
    不用叫使用者自己跑去翻瀏覽器或系統設定。
  • 開發者少寫一堆平台判斷
    權限流程、系統層級阻擋,瀏覽器幫忙處理。

它不是突然冒出來的

一開始 Chrome 是用一個比較泛用的 <permission> 元素做測試,從 Chrome 126 到 143 都在 origin trial。

後來發現,與其什麼權限都塞在同一個元素,不如拆成「用途明確」的元素比較好用,所以才有現在的 <geolocation>

相關文章:對 <permission> 元素的再強化

實際怎麼用

用法很單純,就是把它當成一個 HTML 控制項放在畫面上。不支援的瀏覽器會自動吃裡面的 fallback。

<p>
  點擊下方按鈕,找你附近的地點
  <geolocation>
    <button onclick="requestLocationLegacy()">
      使用我目前的位置
    </button>
  </geolocation>
</p>

不支援 <geolocation> 的瀏覽器,會直接顯示裡面的 <button>,舊的 JavaScript 定位方式也還能用,相容性自然沒有問題。

這個設計的實際回饋

之前在 <permission> 試驗階段,已經有實際網站驗證過「使用者主動點擊」這個模型,並給予回饋

  • Zoom:瀏覽器體驗失敗次數減少 46.9%。
  • Immobiliare.it:位置權限流程成功率提升約 20%。
  • ZapImóveis:曾拒絕的使用者,有 54.4% 願意重新授權。

雖然第一次點下去到授權的時間稍微變長,但因為都是「真的想用」的使用者,網站功能運作的成功率反而更高。

總結

<geolocation> 不是新 API,而是把「要位置權限」這件事用正確的方式說清楚。

對使用者來說比較安心,對開發者來說流程更單純,也比較符合現在對使用者信任的期待。

留言

這個網誌中的熱門文章

如何產生醒目顯示文字的連結?讓使用者一目瞭然的功能(Scroll to Text Fragment)

用CSS的 min max與vw cqw,設計有極限值的RWD響應式文字

Google Search Console 網頁發現方式多了「參照網頁」