此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

URL:canParse() 静态方法

基线 2023
最近可用

自 December 2023 起,此特性已在最新浏览器中得到支持。但在较旧的设备或浏览器中可能无法运行。

URL 接口的 URL.canParse() 静态方法返回一个布尔值,表示绝对 URL 或与基本 URL 结合的相对地址是否可解析和有效。

这是在 try...catch 代码块中构造 URL 的快速而简单的替代方法。对于会使得 URL() 构造函数成功的相同值,它将返回 true,而对于会导致构造函数抛出的错误的值,它返回 false

语法

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

参数

url

字符串或其他任何带有 stringifier 的对象(例如,包括 <a><area> 元素),表示绝对或相对 URL。如果 url 是相对 URL,则 base 为必填项,并将用作基本 URL。如果 url 是绝对 URL,给定的 base 将被忽略。

base 可选

字符串,表示在 url 是相对 URL 的情况下使用的基本 URL。如果未指定,则默认为 undefined

备注:urlbase 参数将根据你传递的任何值进行字符串化,就像其他接受字符串的 Web API 一样。特别是,你可以使用一个现有的 URL 对象作为任一参数,它将被字符串化为该对象的 href 属性。

返回值

如果 URL 可以解析且有效,则为 true;否则为 false

示例

本示例演示了如何使用 URL.canParse() 静态方法来处理一些不同的绝对和相对 URL 的值。

示例的第一部分定义了记录日志的 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("测试有效绝对 URL");
  let url = "https://developer.mozilla.org/";
  let result = URL.canParse(url);
  log(` URL.canParse("${url}"): ${result}`);

  log("\n测试无基本 URL 的相对 URL");
  url = "/zh-CN/docs";
  result = URL.canParse(url);
  log(` URL.canParse("${url}"): ${result}`);

  log("\n测试具有有效基本 URL 的相对 URL");
  let baseUrl = "https://developer.mozilla.org/";
  result = URL.canParse(url, baseUrl);
  log(` URL.canParse("${url}","${baseUrl}"): ${result}`);
} else {
  log("不支持 URL.canParse()");
}

最后,下面的代码表明,baseUrl 不一定是字符串。这里我们传递的是一个 URL 对象。

js
if ("canParse" in URL) {
  log("\n测试以 URL 对象为基本 URL 的相对 URL");
  let baseUrl = new URL("https://developer.mozilla.org/");
  let url = "/zh-CN/docs";
  result = URL.canParse(url, baseUrl);
  log(` URL.canParse("${url}","${baseUrl}"): ${result}`);
}

各项检查结果如下。

规范

规范
URL
# dom-url-canparse

浏览器兼容性

参见