URL:URL() 构造函数

Baseline 已广泛支持

此特性已得到良好支持,可在多种设备和浏览器版本上使用。自 2021 年 4 月起,所有浏览器均已支持此特性。

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

URL() 构造函数会返回一个新创建的 URL 对象,该对象表示由参数定义的 URL。

如果提供的基础 URL 或生成的 URL 不是有效的 URL,则会抛出 JavaScript TypeError 异常。

语法

js
new URL(url)
new URL(url, base)

参数

url

表示绝对 URL 或相对于基础 URL 的相对引用的字符串,或其他具有 字符串化器的对象。如果 url 是相对引用,则 base 是必需的,并用于解析最终的 URL。如果 url 是绝对 URL,则不会使用提供的 base 来创建生成的 URL。

base 可选

表示在 url 是相对引用时要使用的基础 URL 的字符串。如果未指定,则默认为 undefined

当指定 base 时,解析后的 URL 不仅仅是 urlbase 的简单连接。对父目录和当前目录的相对引用是相对于 base URL 的当前目录解析的,包括直到最后一个正斜杠的路径段,但不包括其后的任何内容。对根的相对引用是相对于基础源解析的。有关更多信息,请参阅 解析 URL 的相对引用

注意: urlbase 参数将像其他接受字符串的 Web API 一样,从您传入的任何值(例如 HTMLAnchorElementHTMLAreaElement 元素)进行字符串化。特别是,您可以将现有的 URL 对象用于任一参数,它将从对象的 href 属性进行字符串化。

异常

TypeError

url(在绝对 URL 的情况下)或 base + url(在相对引用的情况下)不是有效 URL。

示例

以下是一些使用构造函数的示例。

注意: 解析 URL 的相对引用 提供了额外的示例,演示了不同的 urlbase 值如何解析为最终的绝对 URL。

js
// Base URLs:
let baseUrl = "https://mdn.org.cn";

let a = new URL("/", baseUrl);
// => 'https://mdn.org.cn/'

let b = new URL(baseUrl);
// => 'https://mdn.org.cn/'

new URL("en-US/docs", b);
// => 'https://mdn.org.cn/en-US/docs'

let d = new URL("/en-US/docs", b);
// => 'https://mdn.org.cn/en-US/docs'

new URL("/en-US/docs", d);
// => 'https://mdn.org.cn/en-US/docs'

new URL("/en-US/docs", a);
// => 'https://mdn.org.cn/en-US/docs'

new URL("/en-US/docs", "https://mdn.org.cn/fr-FR/toto");
// => 'https://mdn.org.cn/en-US/docs'

以下是一些无效 URL 的示例

js
new URL("/en-US/docs", "");
// Raises a TypeError exception as '' is not a valid URL

new URL("/en-US/docs");
// Raises a TypeError exception as '/en-US/docs' is not a valid URL

// Other cases:

new URL("http://www.example.com");
// => 'http://www.example.com/'

new URL("http://www.example.com", B);
// => 'http://www.example.com/'

new URL("", "https://example.com/?query=1");
// => 'https://example.com/?query=1' (Edge before 79 removes query arguments)

new URL("/a", "https://example.com/?query=1");
// => 'https://example.com/a' (see relative URLs)

new URL("//foo.com", "https://example.com");
// => 'https://foo.com/' (see relative URLs)

规范

规范
URL
# dom-url-url

浏览器兼容性

另见