語法
json
/* Absolute URL */
"id": "https://example.com/myapp"
/* Relative URL */
"id": "myapp/v2"
/* URL with query parameters */
"id": "myapp?version=2&mode=trial"
值
描述
id 清單成員用作您 Web 應用程式的唯一識別符號。它允許瀏覽器區分不同的應用程式。
- 當瀏覽器遇到一個
id與已安裝應用程式不匹配的應用清單時,它會將該清單視為一個獨立應用程式的描述,即使它與另一個應用程式由相同的 URL 提供服務。 - 當瀏覽器遇到一個
id與已安裝應用程式的標識匹配的應用清單時,它會將新清單視為現有應用程式清單的替代,即使該應用程式提供的 URL 與之前安裝的 URL 不同。
注意: 雖然 id 是像 URL 一樣處理的,但它並不指向可以訪問的資源,因此不要求它必須在應用程式的 範圍 內。
id 還可以被收集 Web 應用列表的服務用來唯一標識應用程式。
用法說明
使用 id 成員時需要記住的幾個要點:
- 作為推薦實踐,請使用前導
/來指定id是一個根相對 URL 路徑。 - 由於
id是相對於start_url的源解析的,因此id值如../foo、foo、/foo和./foo相對於源都會解析為相同的識別符號。例如,如果start_url是https://example.com/app/,所有這些id值都將解析為https://example.com/foo/。 - 標準 URL 編碼和解碼規則適用於解析
id值。 id中的片段在處理過程中會被移除。例如,如果id設定為foo#bar,它將被解析為foo。同樣,如果id未定義,並且start_url為https://example.com/app/#home,id將解析為https://example.com/app/。id中的查詢引數會被保留幷包含在最終解析的識別符號中。
理解 id 解析
假設您應用程式的 start_url 是 https://example.com/my-app/home。下表演示了清單中不同的 id 值將如何解析:
清單中的 id |
解析後的 id |
解釋 |
|---|---|---|
| undefined | https://example.com/my-app/home |
預設為 start_url |
"" |
https://example.com/my-app/home |
空字串解析為 start_url |
/ |
https://example.com/ |
根相對 URL |
foo?x=y |
https://example.com/foo?x=y |
相對於 start_url 源解析的相對路徑,並保留查詢引數 |
foo#heading |
https://example.com/foo |
相對於 start_url 源解析的相對路徑,並移除片段 |
https://anothersite.com/foo |
https://example.com/my-app/home |
不允許跨域 URL,回退到 start_url |
😀 |
https://example.com/%F0%9F%98%80 |
非 ASCII 字元已編碼為 URL |
示例
建立不同的應用版本
假設您建立了一個具有以下清單的 Web 應用程式:
json
{
"name": "My Weather Application",
"id": "https://example.com/weatherapp/v1",
"start_url": "https://example.com/app"
}
如果您稍後建立此應用程式的另一個版本,並進行了重大更改,希望將其視為一個不同的應用程式,您可以這樣新增清單:
json
{
"name": "My Weather Application",
"id": "https://example.com/weatherapp/v2",
"start_url": "https://example.com/app"
}
在這種情況下,即使兩個清單檔案都由相同的 URL 提供服務,瀏覽器也會將新清單視為一個獨立應用程式的描述,因為 id 是不同的。因此,使用者可以同時安裝這兩個版本。
更新現有應用
考慮一種場景,您部署了一個具有以下清單的 Web 應用程式:
json
{
"name": "My Weather Application",
"id": "https://example.com/weatherapp/",
"start_url": "https://example.com/old-app"
}
但是,您後來決定將應用程式移動到不同的路徑。然後,您將更新清單如下:
json
{
"name": "My Weather Application",
"id": "https://example.com/weatherapp/",
"start_url": "https://example.com/new-app"
}
瀏覽器會將此新清單視為對現有應用程式的更新,因為 id 值匹配。在這種情況下,使用者將收到其現有應用程式的更新,而不是被提示安裝一個新應用程式。
規範
| 規範 |
|---|
| Web 應用清單 # id-member |
瀏覽器相容性
載入中…