URL: canParse() 静态方法
URL.canParse()
是 URL
接口的静态方法,它返回一个布尔值,指示绝对 URL 或与基本 URL 组合的相对 URL 是否可解析且有效。
这是一种快速简便的替代方案,可以替代在 try...catch 块中构造 URL
。对于 URL()
构造函数 成功解析的相同值,它返回 true
,对于导致构造函数抛出异常的值,它返回 false
。
语法
js
URL.canParse(url)
URL.canParse(url, base)
参数
返回值
如果 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 的浏览器中加载。
另请参阅
URL()
URL.canParse()
的 polyfill 可在core-js
中获取。