URL:search 属性

Baseline 已广泛支持

此特性已非常成熟,可在多种设备和浏览器版本上使用。自 ⁨2016 年 9 月⁩以来,它已在各大浏览器中可用。

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

URL 接口的 search 属性是一个搜索字符串,也称为查询字符串,它是一个包含 "?" 及其后面的 URL 参数的字符串。如果 URL 没有搜索查询,则此属性包含一个空字符串 ""

可以设置此属性来更改 URL 的查询字符串。设置时,如果未提供,则会在提供的值前面添加一个 "?" 前缀。将其设置为空字符串 "" 会删除查询字符串。

查询在设置时会进行百分比编码,但在读取时不会进行百分比解码。

现代浏览器提供了 URL.searchParams 属性,可以轻松地从查询字符串中解析出参数。

字符串。

示例

基本用法

js
const url = new URL(
  "https://mdn.org.cn/en-US/docs/Web/API/URL/search?q=123",
);
console.log(url.search); // Logs "?q=123"

与 searchParams 的交互

URL.searchParams 属性将 search 字符串公开为一个 URLSearchParams 对象。更新此 URLSearchParams 时,URL 的 search 会随着其序列化而更新。但是,URL.search 会对 URLSearchParams 进行编码的字符子集进行编码,并将空格编码为 %20 而不是 +。这可能会导致一些令人惊讶的交互——如果您更新 searchParams,即使使用相同的值,URL 的序列化方式也可能不同。

js
const url = new URL("https://example.com/?a=b ~");
console.log(url.href); // "https://example.com/?a=b%20~"
console.log(url.searchParams.toString()); // "a=b+%7E"
// This should be a no-op, but it changes the URL's query to the
// serialization of its searchParams
url.searchParams.sort();
console.log(url.href); // "https://example.com/?a=b+%7E"

const url2 = new URL("https://example.com?search=1234&param=my%20param");
console.log(url2.search); // "?search=1234&param=my%20param"
url2.searchParams.delete("search");
console.log(url2.search); // "?param=my+param"

规范

规范
URL
# dom-url-search

浏览器兼容性

另见

  • 它所属的 URL 接口。