【问题标题】:Browser geolocation: Determining previous permissions浏览器地理位置:确定以前的权限
【发布时间】:2012-07-08 08:49:27
【问题描述】:

好的,我有如下代码:

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

我可以在页面加载时调用它,如果权限被拒绝,我将隐藏依赖于 geoloc 信息的按钮和功能。

但是,我不想在页面加载时请求权限,而只是在用户选择单击 geoloc 按钮之一时按需请求。

所以在这种情况下,假设用户到达我的页面,之前决定拒绝访问地理定位 API,是否可以判断权限之前已被拒绝,以便我可以隐藏按钮而不必等到他们再次点击其中一个按钮?

【问题讨论】:

    标签: html browser geolocation w3c-geolocation


    【解决方案1】:

    您的意思是拒绝访问另一个网站,还是以前访问您的网站?

    如果是前者,为什么要假设您服从该决定?也就是别管它,反正再问。

    如果是后者,您可能应该在您的网站上存储用户会话期间的决定。如果您使用服务器会话或使用简单的 cookie,则可以在服务器端执行此操作。

    【讨论】:

    • 我接受这个答案,因为它是第一个发布的。将查询权限与提示权限混为一谈似乎是规范的遗漏。
    【解决方案2】:

    您可以将结果存储在浏览器中,例如使用 LocalStorage 或 cookie。但是,如果用户第一次拒绝访问并不意味着他下次会这样做。但是,如果您隐藏或禁用按钮,即使他愿意,他也无法使用该功能。现在,如果他连续拒绝 10 次,或者类似的次数,那就更有意义了。

    【讨论】:

    • 使用 Chrome 进行测试:第一次调用 getCurrentPosition 会弹出权限对话框以明确询问用户。随后的调用会默默地拒绝该权限,因此无论如何用户都没有机会改变她的决定。
    • 不同的浏览器意味着不同的客户端行为。即使使用 Chrome,用户也可以进入设置并重置权限以再次收到提示。
    • 是的,我还注意到 Chrome 在地址栏的右侧放置了一个小图标,可以直接访问此设置。
    • 问题仍然是,如果用户在之前拒绝权限后,随后点击按钮,则不会重新提示权限。
    • 尝试使用 IE 或 FireFox(或 iPad)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 2021-08-13
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    相关资源
    最近更新 更多