URL: canParse() 靜態方法

Baseline 2023
新推出

自 ⁨2023 年 12 月⁩起,此功能可在最新的裝置和瀏覽器版本上使用。此功能可能無法在較舊的裝置或瀏覽器上使用。

注意:此功能在 Web Workers 中可用。

URL 介面的 URL.canParse() 靜態方法返回一個布林值,指示一個絕對 URL,或一個與基礎 URL 結合的相對 URL 是否可以解析且有效。

這是在 try...catch 塊中構建 URL 的一種快速簡便的替代方法。它對於 URL() 建構函式 會成功解析的相同值返回 true,對於會導致建構函式丟擲錯誤的那些值返回 false

語法

js
URL.canParse(url)
URL.canParse(url, base)

引數

url

一個字串或任何其他帶有 字串轉換器的物件 — 包括,例如,一個 <a><area> 元素 — 代表一個絕對或相對 URL。如果 url 是一個相對 URL,則 base 是必需的,並將被用作基礎 URL。如果 url 是一個絕對 URL,則給定的 base 將被忽略。

base 可選

一個字串,表示在 url 是相對 URL 時要使用的基礎 URL。如果未指定,則預設為 undefined

注意: urlbase 引數將透過字串轉換器從您傳入的任何值進行轉換,就像其他接受字串的 Web API 一樣。特別地,您可以將現有的 URL 物件用於任一引數,它將被轉換為物件的 href 屬性。

返回值

如果 URL 可以解析且有效,則返回 true;否則返回 false

示例

這個即時示例演示瞭如何為幾個不同的絕對和相對 URL 值使用 URL.canParse() 靜態方法。

示例的第一部分定義了一個用於記錄輸出的 HTML <pre> 元素,以及一個名為 log() 的記錄方法。

html
<pre id="log"></pre>
js
const logElement = document.getElementById("log");
function log(text) {
  logElement.innerText += `${text}\n`;
}

接下來,我們使用條件 "canParse" in URL 來檢查 URL.canParse() 方法是否受支援。如果該方法受支援,我們將記錄檢查絕對 URL、沒有基礎 URL 的相對 URL 以及具有有效基礎 URL 的相對 URL 的結果。我們還將記錄 URL.canParse() 不受支援的情況。

js
if ("canParse" in URL) {
  log("Test valid absolute URL");
  let url = "https://mdn.club.tw/";
  let result = URL.canParse(url);
  log(` URL.canParse("${url}"): ${result}`);

  log("\nTest relative URL with no base URL");
  url = "/en-US/docs";
  result = URL.canParse(url);
  log(` URL.canParse("${url}"): ${result}`);

  log("\nTest relative URL with valid base URL");
  let baseUrl = "https://mdn.club.tw/";
  result = URL.canParse(url, baseUrl);
  log(` URL.canParse("${url}","${baseUrl}"): ${result}`);
} else {
  log("URL.canParse() not supported");
}

最後,下面的程式碼顯示 baseUrl 不必是字串。在這裡,我們傳遞了一個 URL 物件。

js
if ("canParse" in URL) {
  log("\nTest relative URL with base URL supplied as a URL object");
  let baseUrl = new URL("https://mdn.club.tw/");
  let url = "/en-US/docs";
  result = URL.canParse(url, baseUrl);
  log(` URL.canParse("${url}","${baseUrl}"): ${result}`);
}

每個檢查的結果如下所示。

規範

規範
URL
# dom-url-canparse

瀏覽器相容性

另見