URL:search 属性
注意:此功能在 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¶m=my%20param");
console.log(url2.search); // "?search=1234¶m=my%20param"
url2.searchParams.delete("search");
console.log(url2.search); // "?param=my+param"
规范
| 规范 |
|---|
| URL # dom-url-search |
浏览器兼容性
加载中…
另见
- 它所属的
URL接口。