地理位置

W3C 候选推荐快照

关于此文档的更多详细信息
本版本:
https://www.w3.org/TR/2026/CR-geolocation-20260326/
最新发布版本:
https://www.w3.org/TR/geolocation/
最新编辑草稿:
https://w3c.github.io/geolocation/
历史:
https://www.w3.org/standards/history/geolocation/
提交历史
测试套件:
https://wpt.live/geolocation/
实现报告:
https://w3c.github.io/geolocation/reports/implementation.html
编辑:
Marcos Cáceres (Apple Inc.)
Reilly Grant (Google)
前任编辑:
Andrei Popescu (Google Inc.)
反馈:
GitHub w3c/geolocation (拉取请求, 新问题, 打开的问题)
勘误:
存在勘误.
浏览器支持:
caniuse.com

摘要

地理位置提供对与托管设备相关联的地理位置信息的访问。

本文档状态

本节描述本 文档在发布时的状态。当前 W3C 发布物列表及本技术报告的最新修订版可在 W3C 标准及草案索引中查阅。

Geolocation 于 W3C 于 2022年9月1日作为推荐标准发布。2026年3月,规范回归候选推荐阶段, 以便工作组能更高效地对实质性更改进行迭代,并持续添加新功能。

在发布时,设备与传感器工作组仍按照 2020年9月15日版 W3C 专利政策运行。

本文档由设备与传感器工作组Web 应用工作组推荐标准流程 的候选推荐快照形式发布。

作为候选推荐发布,并不代表 W3C 及其成员的认可。候选推荐快照已 经过广泛审查 ,旨在汇集 实现经验, 并获得工作组成员就实现 免版税许可 的承诺。

本候选推荐预计不会早于2026年4月31日进展为推荐。

本文档由 按照W3C 专利政策运作的工作组制定。 W3C 维护一份 有关任何专利披露的公开列表(设备与传感器工作组) 以及 有关任何专利披露的公开列表(Web 应用工作组) ,与各组的交付物相关;这些页面也包含 专利披露的说明。若个人实际得知专利且认为该专利包含 必要声明 ,必须按照 W3C 专利政策第6节披露相关信息。

本文档受 2025年8月18日 W3C 流程文件 管辖。

1. 介绍

本节为非规范性内容。

Geolocation 定义了一个高级接口,用于访问仅与承载该实现的设备相关联的位置信息。 常见的位置来源包括全球定位系统 (GPS) 以及从网络信号(例如 IP 地址、RFID、WiFi 和 Bluetooth MAC 地址、GSM/CDMA 小区 ID)推断的位置信息,或用户输入。该 API 本身对底层位置来源保持中立,并且不保证该 API 返回的是设备的实际位置。

如果终端用户 授予权限Geolocation

1.1 范围

本节为非规范性内容。

本规范仅限于提供用于检索与承载设备相关联的地理位置信息的脚本 API。地理位置信息以世界大地测量系统坐标 [WGS84] 表示。它不包括提供任何形式的标记语言,也不包括为构建识别地理位置的 URL 定义新的 URL 方案。

2. 示例

本节为非规范性内容。

该 API 旨在同时支持“一次性”位置请求和重复的位置更新。以下示例说明了常见用例。

2.1 获取当前位置

本节为非规范性内容。

请求用户的当前位置。如果用户允许,您将收到一个位置对象。

2.2 监视位置

本节为非规范性内容。

请求监视用户的当前位置。如果用户允许,您将连续收到用户位置的更新。

2.3 停止监视位置

本节为非规范性内容。

通过调用 clearWatch() 方法停止监视位置变化。

2.4 错误处理

本节为非规范性内容。

当发生错误时,watchPosition()getCurrentPosition() 方法的第二个参数将以 GeolocationPositionError 错误的形式被调用,这有助于您判断可能出了什么问题。

2.5 maximumAge 用作缓存控制

本节为非规范性内容。

默认情况下,只要用户代理具有先前获取的位置,API 总是尝试返回缓存的位置。在本例中,我们接受年龄不超过 10 分钟的位置。如果用户代理没有足够新的缓存位置对象,它会自动获取一个新位置。

2.6 使用 timeout

本节为非规范性内容。

如果您需要在时间敏感的情况下获取位置信息,可以使用 PositionOptionstimeout 成员来限制您愿意等待获取位置的时间。

2.7 在第三方上下文中启用该 API

本节为非规范性内容。

默认允许列表(default allowlist)中的 'self' 允许同源嵌套框架中使用该 API,但阻止第三方内容使用该 API。

可以通过在 allow="geolocation" 属性添加到 iframe 元素来有选择地启用第三方使用:

或者,可以通过指定 HTTP 响应头在第一方上下文中禁用该 API:

有关 Permissions-Policy HTTP 头的更多详细信息,请参阅 Permissions Policy

3. 隐私考虑

本节为非规范性内容。

本规范中定义的 API 用于检索承载设备的地理位置。在几乎所有情况下,该信息也会透露设备用户的位置,从而可能危及用户的隐私。

3.2 位置信息接收者的隐私考虑

本节为非规范性内容。

注意: 开发者对此敏感数据的责任

本节适用于“接收者”,通常指使用 Geolocation 的开发者。尽管用户代理或本规范无法强制执行这些要求,但开发者需认真阅读本节并尽最大努力遵守以下建议。开发者需要意识到其司法管辖区内可能存在适用于用户位置信息使用和访问的隐私法律。

接收者应仅在必要时请求位置信息,并且仅将位置信息用于提供给他们时所指定的任务。完成该任务后,接收者应当丢弃位置信息,除非用户明确允许保留。接收者还需要采取措施保护这些信息,防止未经授权的访问。如果存储了位置信息,应允许用户更新和删除这些信息。

位置信息的接收者在未经用户明确许可的情况下,应避免转发位置信息。转发时应谨慎,建议使用加密。

接收者应明确且显著地披露他们正在收集位置信息、收集目的、数据保留时长、数据如何被保护、如有共享则如何共享、用户如何访问、更新和删除数据以及用户对数据的其他选择。本披露应包括对上述指南的任何例外情况的说明。

3.3 实现方面的考虑

本节为非规范性内容。

建议实现者考虑以下可能对用户隐私产生负面影响的方面:在某些情况下,用户可能会无意中授予用户代理向网站披露其位置的权限。在其他情况下,托管在某个 URL 的内容发生变化,以至于之前授予的位置权限在用户看来不再适用。或者用户可能会改变主意。

预测或阻止这些情况本质上很困难。缓解和深入的防御措施是实现者的责任,而非本规范所规定。然而,在设计这些措施时,建议实现者提高用户对位置共享的意识,并提供用户界面以便撤销权限。

3.4 检查使用该 API 的权限

Geolocation 是由 默认强大功能 标识的功能,其名称(name)为 "geolocation"

检查权限 以使用该 API 时,用户代理 MAY 建议基于时间的权限 时长,例如“24 小时”、“1 周”,或选择记住该权限的永久授予。然而,强烈建议用户代理优先将权限的权限 时长限制为单次会话:例如,在 realm 被销毁、终端用户从该 origin 导航离开,或相关浏览器标签被关闭之前。

4. 安全性考虑

在本规范发布时,与 Geolocation 相关没有任何安全性考虑。不过,建议读者阅读 3. 隐私考虑

6. Geolocation 接口与回调

WebIDL[Exposed=Window]
interface Geolocation {
  undefined getCurrentPosition (
    PositionCallback successCallback,
    optional PositionErrorCallback? errorCallback = null,
    optional PositionOptions options = {}
  );

  long watchPosition (
    PositionCallback successCallback,
    optional PositionErrorCallback? errorCallback = null,
    optional PositionOptions options = {}
  );

  undefined clearWatch (long watchId);
};

callback PositionCallback = undefined (
  GeolocationPosition position
);

callback PositionErrorCallback = undefined (
  GeolocationPositionError positionError
);

6.1 内部槽

使用下表所示的内部槽创建 Geolocation 的实例:

内部槽 描述
[[cachedPosition]] A GeolocationPosition, initialized to null. It's a reference to the last acquired position and serves as a cache. A user agent MAY evict [[cachedPosition]] by resetting it to null at any time for any reason.
[[watchIDs]] Initialized as an empty list of unsigned long items.

6.2 getCurrentPosition() 方法

The getCurrentPosition(successCallback, errorCallback, options) 方法步骤如下:

  1. If this's relevant global object's associated Document is not fully active:
    1. 使用错误回调 errorCallback 并传入 POSITION_UNAVAILABLE
    2. 终止此算法。
  2. 请求一个位置,传入 thissuccessCallback, errorCallback, 和 options

6.3 watchPosition() 方法

The watchPosition(successCallback, errorCallback, options) 方法步骤如下:

  1. If this's relevant global object's associated Document is not fully active:
    1. 使用错误回调,传入 errorCallback 以及 POSITION_UNAVAILABLE
    2. 返回 0。
  2. watchId 为一个 实现定义的 unsigned long,且其值大于零。
  3. watchId 附加到 this[[watchIDs]]
  4. 请求一个位置,传入 thissuccessCallback, errorCallback, options,以及 watchId
  5. 返回 watchId

6.4 clearWatch() 方法

When clearWatch() is invoked, the user agent MUST:

  1. 移除 watchIdthis[[watchIDs]]

6.5 请求位置

请求位置, 传入一个 Geolocation geolocation,一个 PositionCallback successCallback,一个 PositionErrorCallback? errorCallback,一个 PositionOptions options,以及一个可选的 watchId

  1. watchIDsgeolocation[[watchIDs]]
  2. documentgeolocation相关全局对象关联的 Document
  3. 如果 document 不被 允许使用 “geolocation” 功能:
    1. 如果传入了 watchId,则 watchIDs 中移除 watchId
    2. 使用错误回调,传入 errorCallbackPERMISSION_DENIED
    3. 终止此算法。
  4. 如果 geolocation环境设置对象 是一个 非安全上下文
    1. 如果传入了 watchId,则 watchIDs 中移除 watchId
    2. 使用错误回调,传入 errorCallbackPERMISSION_DENIED
    3. 终止此算法。
  5. 如果 document可见性状态 为 "hidden",等待以下 页面可见性变更步骤 运行:
    1. 断言document可见性状态 为 "visible"。
    2. 继续下面的下一步。
  6. descriptor 为一个新的 PermissionDescriptor,其 name"geolocation"
  7. 并行 执行:
    1. permission 设为 请求使用 descriptor 的权限。
    2. 如果 permission 为 "denied",则:
      1. 如果传入了 watchId,则 watchIDs 中移除 watchId
      2. 使用错误回调,传入 errorCallbackPERMISSION_DENIED
      3. 终止此算法。
    3. 等待 获取位置,传入 successCallbackerrorCallbackoptions,以及 watchId
    4. 如果未传入 watchId,则终止此算法。
    5. watchIDs 包含 watchId 时:
      1. 等待地理位置发生显著变化。什么构成显著的地理位置变化由实现决定。用户代理 可以 对报告位置变化的频率施加速率限制。用户代理 必须 考虑将 设置模拟位置数据 视为显著变化。
      2. 如果 document 不是 完全激活可见性状态 不是 "visible",则返回到上一步并再次 等待地理位置发生显著变化
        注意: 位置更新仅针对完全激活且可见的文档
      3. 等待 获取位置,传入 successCallback, errorCallback, options,以及 watchId

6.6 获取位置

获取位置,传入 PositionCallback successCallback,一个 PositionErrorCallback? errorCallbackPositionOptions options,以及一个可选的 watchId

  1. 如果传入了 watchId 并且 this[[watchIDs]] 不包含 watchId,则终止此算法。
  2. acquisitionTime 为一个新的 EpochTimeStamp,表示现在。
  3. timeoutTimeacquisitionTimeoptions.timeout 的和。
  4. cachedPositionthis[[cachedPosition]]
  5. 创建一个在 timeoutTime 到期的实现特定的 timeout 任务,在此期间它通过运行以下步骤尝试获取设备的位置:
    1. permission获取当前权限状态"geolocation"
    2. 如果 permission 为 "denied":
      1. 停止 timeout
      2. 执行 用户或系统拒绝权限 的失败情况步骤。
    3. 如果 permission 为 "granted":
      1. 通过运行以下步骤检查是否应使用模拟位置:
        1. emulatedPositionData获取模拟位置数据,传入 this
        2. 如果 emulatedPositionData 不为 null:
          1. 如果 emulatedPositionData 是一个 GeolocationPositionError
            1. 使用错误回调,传入 errorCallbackemulatedPositionData.code
            2. 终止此算法。
          2. position一个新的 GeolocationPosition,传入 emulatedPositionDataacquisitionTimeoptions.enableHighAccuracy
          3. geolocation 任务源 上排队一个任务,其步骤为 调用 successCallback,参数为 « position » 和 "report"。
          4. 终止此算法。
      2. position 为 null。
      3. 如果 cachedPosition 不为 null,且 options.maximumAge 大于 0:
        1. cacheTimeacquisitionTime 减去 options.maximumAge 成员的值。
        2. 如果 cachedPositiontimestamp 的值大于 cacheTime,且 cachedPosition[[isHighAccuracy]] 等于 options.enableHighAccuracy
          1. geolocation 任务源 上排队一个任务,其步骤为 调用 successCallback,参数为 « cachedPosition » 和 "report"。
          2. 终止此算法。
      4. 否则,如果 position 不是 cachedPosition, 尝试从底层系统获取位置数据,获取时可选择考虑 options.enableHighAccuracy 的值。
      5. 如果在获取过程中 timeout 到期,或获取设备位置失败:
        1. 停止 timeout
        2. 转到 处理失败
        3. 终止此算法。
      6. 如果从系统获取位置数据成功:
        1. positionData 为一个包含基于获取到的位置数据的以下名/值对的 映射
          "accuracy"
          一个非负的 double, 表示以米为单位的 95% 置信水平的精度值。精度衡量测量坐标与真实位置的接近程度。
          "altitude"
          一个 double?, 表示相对于 [WGS84] 椭球体的海拔(以米为单位),若不可用则为 null。海拔衡量相对于海平面的高度。
          "altitudeAccuracy"
          一个非负的 double?, 表示海拔精度,若不可用则为 null,以米为单位表示 95% 的置信水平。海拔精度衡量测量海拔与真实海拔的接近程度。
          "heading"
          一个 double?, 表示以度为单位的航向,若不可用或设备静止则为 null。航向衡量设备相对于真北的移动方向。
          "latitude"
          一个 double, 表示使用 [WGS84] 坐标系的地球表面纬度坐标(以度为单位)。纬度衡量一个点相对于赤道的南北距离。
          "longitude"
          一个 double, 表示使用 [WGS84] 坐标系的地球表面经度坐标(以度为单位)。经度衡量一个点相对于本初子午线的东西距离。
          "speed"
          一个非负的 double?, 表示以米每秒为单位的速度,若不可用则为 null。速度衡量设备移动的快慢。
        2. position一个新的 GeolocationPosition,传入 positionDataacquisitionTimeoptions.enableHighAccuracy
        3. this[[cachedPosition]] 设置为 position
      7. 停止 timeout
      8. geolocation 任务源 上排队一个任务, 其步骤为 调用 successCallback,参数为 « position » 和 "report"。
    处理失败:
    • 如果获取位置失败,则根据匹配故障的条件执行以下之一:
      用户或系统拒绝权限:

      使用错误回调,传入 errorCallbackPERMISSION_DENIED

      注意: 浏览器权限 与 操作系统权限
      超时到期:
      使用错误回调,传入 errorCallbackTIMEOUT
      数据获取错误或任何其他原因:
      使用错误回调,传入 errorCallbackPOSITION_UNAVAILABLE

6.7 使用错误回调

当被指示 使用错误回调 时,给定一个 PositionErrorCallback? callback 和一个 unsigned short code

  1. 如果 callback 为 null,则返回。
  2. error 为新创建的 GeolocationPositionError 实例,其 code 属性初始化为 code
  3. geolocation 任务源 上排队一个任务,其步骤为 调用 callback,参数为 « error » 和 "report"。

7. PositionOptions 字典

WebIDLdictionary PositionOptions {
  boolean enableHighAccuracy = false;
  [Clamp] unsigned long timeout = 0xFFFFFFFF;
  [Clamp] unsigned long maximumAge = 0;
};

7.1 enableHighAccuracy 成员

The enableHighAccuracy 成员提供了一个提示, 表示应用希望接收尽可能精确的位置数据。 该成员的预期用途是允许应用告知实现它们不需要高精度的地理定位结果,因此实现 可以 避免使用 消耗大量电力的定位提供者(例如 GPS)。

注意: 关于 enableHighAccuracy 的一条警告

7.2 timeout 成员

The timeout 成员表示以毫秒为单位的最长等待时间, 在该时间之后 获取位置 操作便会过期。

注意: 超时何时开始计算?

等待文档变为可见以及 获取使用该 API 的权限 所花费的时间 不包括在 timeout 成员所覆盖的期间内。timeout 成员仅在 开始获取位置 时生效。

注意: 立即取消

7.3 maximumAge 成员

The maximumAge 成员指示 Web 应用愿意接受一个其年龄不大于 指定毫秒数的缓存位置。

8. GeolocationPosition 接口

WebIDL[Exposed=Window, SecureContext]
interface GeolocationPosition {
  readonly attribute GeolocationCoordinates coords;
  readonly attribute EpochTimeStamp timestamp;
  [Default] object toJSON();
};

8.1 coords 属性

The coords 属性包含地理坐标。

8.2 timestamp 属性

The timestamp 属性表示获取设备地理位置的时间。

8.3 toJSON() 方法

The toJSON() 方法返回 GeolocationPosition 对象的 JSON 表示。

8.4 内部槽

GeolocationPosition 的实例 使用下表所示的内部槽创建:

Internal slot Description
[[isHighAccuracy]] A boolean,记录在创建该 GeolocationPositionenableHighAccuracy 成员的值。

8.5 任务来源

下列 task source 由本规范定义。

The geolocation task source
本规范使用它在执行 位置请求 时排队非阻塞的 PositionCallbackPositionErrorCallback

9. GeolocationCoordinates 接口

WebIDL[Exposed=Window, SecureContext]
interface GeolocationCoordinates {
  readonly attribute double accuracy;
  readonly attribute double latitude;
  readonly attribute double longitude;
  readonly attribute double? altitude;
  readonly attribute double? altitudeAccuracy;
  readonly attribute double? heading;
  readonly attribute double? speed;
  [Default] object toJSON();
};

9.1 latitude, longitude, and accuracy 属性

The latitudelongitude 属性表示位置,单位为度的实数,使用 [WGS84] 坐标系。

The accuracy 属性表示位置精度半径,单位为米。

9.2 altitudealtitudeAccuracy 属性

The altitude 属性表示位置的高度, 以相对于 [WGS84] 椭球体的米为单位。

The altitudeAccuracy 属性表示以米为单位的海拔精度(例如 10 米)。

9.3 heading 属性

The heading 属性表示承载设备的行驶方向,以度为单位指定,且满足 0° ≤ heading < 360°,按顺时针方向相对于真北计。

9.4 speed 属性

The speed 属性表示承载设备当前速度的水平分量的大小,单位为米每秒。

9.5 toJSON() 方法

The toJSON() 方法返回 GeolocationCoordinates 对象的 JSON 表示。

9.6 构造一个 GeolocationPosition

一个新的 GeolocationPosition 使用 map positionDataEpochTimeStamp timestamp 和 布尔值 isHighAccuracy 构造,执行以下步骤:

  1. coords 为新创建的 GeolocationCoordinates 实例。
  2. 对于 positionData 中的每个 keyvalue
    1. coords 的名为 key 的属性设置为 value
  3. 返回一个新创建的 GeolocationPosition 实例,其 coords 属性初始化为 coords,其 timestamp 属性初始化为 timestamp,并将其 [[isHighAccuracy]] 内部槽设置为 isHighAccuracy

10. GeolocationPositionError 接口

WebIDL[Exposed=Window]
interface GeolocationPositionError {
  const unsigned short PERMISSION_DENIED = 1;
  const unsigned short POSITION_UNAVAILABLE = 2;
  const unsigned short TIMEOUT = 3;
  readonly attribute unsigned short code;
  readonly attribute DOMString message;
};

10.1 常量

PERMISSION_DENIED(数值 1)
请求位置 失败,因为用户拒绝了使用该 API 的权限,或请求是在 非安全上下文 发起的。
POSITION_UNAVAILABLE(数值 2)
获取位置 失败。
TIMEOUT(数值 3)
指定在 timeout 成员中的时间在用户代理成功 获取位置 之前已过期。

10.2 code 属性

code 属性返回其被 初始化为 的值(可能的值见 10.1 常量)。

10.3 message 属性

message 属性是对 code 属性的对开发者友好的文本描述。

注意: 不要将 .message 显示给用户!

11. 权限策略

本规范定义了一个由标记字符串 "geolocation" 标识的 受策略控制的功能。其 默认允许列表'self'

12. 仿真

为了用户代理自动化和应用测试的目的,本文档定义了地理位置仿真(geolocation emulations)。

每个 顶级可遍历体 都有一个关联的 模拟位置数据, 该数据表示 GeolocationCoordinatesGeolocationPositionError 或 null,初始为 null。

设置模拟位置数据,给定 可导航对象 navigable 和一个 emulatedPositionData

  1. 断言 emulatedPositionData 要么为 null,要么为 GeolocationCoordinates,或为 GeolocationPositionError
  2. traversablenavigable顶级可遍历体
  3. 如果 traversable 非空:
    1. traversable 的关联 模拟位置数据 设置为 emulatedPositionData
    2. 用户代理 必须 将此视为在 等待地理位置发生显著变化 步骤中的“显著变化”。

获取模拟位置数据,给定 Geolocation geolocation

  1. navigablegeolocation相关全局对象关联的 Document节点可导航对象
  2. 如果 navigable 为 null,返回 null。
  3. traversablenavigable顶级可遍历体
  4. 如果 traversable 为 null,返回 null。
  5. 返回 traversable 的关联 模拟位置数据

13. 一致性

除被标注为非规范性的章节之外,本规范中的所有创作指南、图表、示例和注释均为非规范性。规范中的其他所有内容均为规范性。

本文档中关键字 MAYMUSTRECOMMENDED 的解释与 BCP 14 [RFC2119] [RFC8174] 中所述相同,且仅当这些词以全部大写形式出现时适用,如本文所示。

A. IDL 索引

WebIDLpartial interface Navigator {
  [SameObject] readonly attribute Geolocation geolocation;
};

[Exposed=Window]
interface Geolocation {
  undefined getCurrentPosition (
    PositionCallback successCallback,
    optional PositionErrorCallback? errorCallback = null,
    optional PositionOptions options = {}
  );

  long watchPosition (
    PositionCallback successCallback,
    optional PositionErrorCallback? errorCallback = null,
    optional PositionOptions options = {}
  );

  undefined clearWatch (long watchId);
};

callback PositionCallback = undefined (
  GeolocationPosition position
);

callback PositionErrorCallback = undefined (
  GeolocationPositionError positionError
);

dictionary PositionOptions {
  boolean enableHighAccuracy = false;
  [Clamp] unsigned long timeout = 0xFFFFFFFF;
  [Clamp] unsigned long maximumAge = 0;
};

[Exposed=Window, SecureContext]
interface GeolocationPosition {
  readonly attribute GeolocationCoordinates coords;
  readonly attribute EpochTimeStamp timestamp;
  [Default] object toJSON();
};

[Exposed=Window, SecureContext]
interface GeolocationCoordinates {
  readonly attribute double accuracy;
  readonly attribute double latitude;
  readonly attribute double longitude;
  readonly attribute double? altitude;
  readonly attribute double? altitudeAccuracy;
  readonly attribute double? heading;
  readonly attribute double? speed;
  [Default] object toJSON();
};

[Exposed=Window]
interface GeolocationPositionError {
  const unsigned short PERMISSION_DENIED = 1;
  const unsigned short POSITION_UNAVAILABLE = 2;
  const unsigned short TIMEOUT = 3;
  readonly attribute unsigned short code;
  readonly attribute DOMString message;
};

B. 索引

B.1 本规范定义的术语

B.2 通过引用定义的术语

C. 致谢

本节为非规范性内容。

本规范建立在行业内早期工作的基础之上,包括 Aza Raskin 的研究、Google Gears 地理定位 API,以及 LocationAware.org。

同时感谢 Alec Berntson, Alissa Cooper, Steve Block, Greg Bolsinga, Lars Erik Bolstad, Aaron Boodman, Dave Burke, Chris Butler, Max Froumentin, Shyam Habarakada, Marcin Hanclik, Ian Hickson, Brad Lassey, Angel Machin, Cameron McCormack, Daniel Park, Stuart Parmenter, Olli Pettay, Chris Prince, Arun Ranganathan, Carl Reed, Thomas Roessler, Dirk Segers, Allan Thomson, Martin Thomson, Doug Turner, Erik Wilde, Matt Womer, and Mohamed Zergaoui。

D. 变更记录

本节为非规范性内容。

Since publication as a W3C Recommendation in 2022, Geolocation has received the following normative changes:

Since First Public Working Draft in 2021, until it was published as a W3C Recommendation in 2022, Geolocation received the following normative changes:

Since publication of the Second Edition in 2016, this specification received the following substantive changes:

See the commit history for a complete list of changes.

E. 参考文献

E.1 规范性引用

[hr-time]
高分辨率时间. Yoav Weiss. W3C. 2 March 2026. W3C Working Draft. URL: https://www.w3.org/TR/hr-time-3/
[html]
HTML 标准. Anne van Kesteren; Domenic Denicola; Dominic Farolino; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. 活动 标准. URL: https://html.spec.whatwg.org/multipage/
[infra]
Infra 标准. Anne van Kesteren; Domenic Denicola. WHATWG. 现行标准. URL: https://infra.spec.whatwg.org/
[Permissions]
Permissions(权限). Marcos Caceres; Mike Taylor. W3C. 6 October 2025. W3C Working Draft. URL: https://www.w3.org/TR/permissions/
[permissions-policy]
Permissions Policy(权限策略). Ian Clelland. W3C. 6 October 2025. W3C Working Draft. URL: https://www.w3.org/TR/permissions-policy-1/
[RFC2119]
在 RFC 中指示需求等级使用的关键字. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC8174]
RFC 2119 关键字中大小写歧义. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[webidl]
Web IDL 标准. Edgar Chen; Timothy Gu. WHATWG. 现行标准. URL: https://webidl.spec.whatwg.org/
[WGS84]
世界大地测量系统 1984(WGS 84). Office of Geomatics, National Geospatial Intelligence Agency. 2008. URL: https://earth-info.nga.mil/index.php?dir=wgs84&action=wgs84