URL:URL() 构造函数
注意:此功能在 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 不仅仅是url和base的简单连接。对父目录和当前目录的相对引用是相对于baseURL 的当前目录解析的,包括直到最后一个正斜杠的路径段,但不包括其后的任何内容。对根的相对引用是相对于基础源解析的。有关更多信息,请参阅 解析 URL 的相对引用。
注意: url 和 base 参数将像其他接受字符串的 Web API 一样,从您传入的任何值(例如 HTMLAnchorElement 或 HTMLAreaElement 元素)进行字符串化。特别是,您可以将现有的 URL 对象用于任一参数,它将从对象的 href 属性进行字符串化。
异常
TypeError-
url(在绝对 URL 的情况下)或base+url(在相对引用的情况下)不是有效 URL。
示例
以下是一些使用构造函数的示例。
注意: 解析 URL 的相对引用 提供了额外的示例,演示了不同的 url 和 base 值如何解析为最终的绝对 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 |
浏览器兼容性
加载中…
另见
URL.parse(),是此构造函数的非抛出替代方案core-js中的URL的 Polyfill- 它所属的接口:
URL。