URL: canParse() 静态方法

基线 2023

新可用

2023 年 12 月起,此功能在最新的设备和浏览器版本中均可使用。此功能可能在较旧的设备或浏览器中无法使用。

URL.canParse()URL 接口的静态方法,它返回一个布尔值,指示绝对 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

注意:与其他接受字符串的 Web API 一样,urlbase 参数将分别从您传递的任何值中进行字符串化。特别是,您可以对任一参数使用现有的 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.org.cn/";
  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.org.cn/";
  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.org.cn/");
  let url = "/en-US/docs";
  result = URL.canParse(url, baseUrl);
  log(` URL.canParse("${url}","${baseUrl}"): ${result}`);
}

每次检查的结果如下所示。

规范

规范
URL 标准
# dom-url-canparse

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅