URL: phương thức tĩnh parse()
Baseline
2024
Newly available
Since September 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Note: This feature is available in Web Workers.
Phương thức tĩnh URL.parse() của giao diện URL trả về một đối tượng URL mới được tạo, biểu diễn URL được xác định bởi các tham số.
Nếu URL cơ sở được cung cấp hoặc URL kết quả không phải là URL hợp lệ có thể phân tích, null sẽ được trả về.
Đây là một lựa chọn thay thế cho việc dùng constructor URL() để tạo một URL trong khối try...catch, hoặc dùng canParse() để kiểm tra các tham số và trả về null nếu phương thức trả về false.
Cú pháp
URL.parse(url)
URL.parse(url, base)
Tham số
url-
Một chuỗi hoặc bất kỳ đối tượng nào khác có stringifier đại diện cho một URL tuyệt đối hoặc một tham chiếu tương đối tới một URL. Nếu
urllà một tham chiếu tương đối,baselà bắt buộc, và được dùng để phân giải URL cuối cùng. Nếuurllà một URL tuyệt đối,baseđược cung cấp sẽ không được dùng để tạo URL kết quả. baseOptional-
Một chuỗi đại diện cho URL cơ sở dùng trong trường hợp
urllà một URL tương đối. Nếu không chỉ định, giá trị mặc định làundefined.Khi bạn chỉ định một URL
base, URL được phân giải không chỉ đơn giản là nốiurlvàbase. Các tham chiếu tương đối tới thư mục cha và thư mục hiện tại được phân giải tương đối với thư mục hiện tại của URLbase, bao gồm chỉ các đoạn đường dẫn cho tới dấu gạch chéo cuối cùng, nhưng không bao gồm những phần sau đó. Các tham chiếu tương đối tới gốc được phân giải tương đối với origin của base. Để biết thêm thông tin, xem Phân giải các tham chiếu tương đối tới một URL.
Note:
Các đối số url và base sẽ lần lượt được stringify từ bất kỳ giá trị nào bạn truyền vào, chẳng hạn như một phần tử HTMLAnchorElement hoặc HTMLAreaElement, giống như các Web API khác chấp nhận một chuỗi.
Đặc biệt, bạn có thể dùng một đối tượng URL hiện có cho bất kỳ đối số nào, và nó sẽ được stringify từ thuộc tính href của đối tượng.
Giá trị trả về
Một URL nếu các tham số có thể được phân giải thành URL hợp lệ; null nếu không.
Ví dụ
Phân giải các tham chiếu tương đối tới một URL và URL() constructor cung cấp thêm ví dụ minh họa cách các giá trị url và base khác nhau được phân giải thành một URL tuyệt đối cuối cùng (dù chủ yếu dùng URL()).
Cách dùng URL.parse()
Ví dụ trực tiếp này minh họa cách dùng phương thức tĩnh URL.parse() với một vài giá trị URL tuyệt đối và tham chiếu tương đối khác nhau.
Trước hết chúng ta kiểm tra xem phương thức URL.parse() có được hỗ trợ hay không bằng điều kiện "parse" in URL.
Nếu phương thức được hỗ trợ, chúng ta ghi lại kết quả của việc kiểm tra một URL tuyệt đối, một tham chiếu tương đối và một URL cơ sở, một tham chiếu tương đối với một URL cơ sở phức tạp hơn, một URL tuyệt đối hợp lệ với một URL cơ sở hợp lệ (không được dùng), và một URL cơ sở không hợp lệ dẫn đến việc phương thức trả về null.
Chúng ta cũng ghi lại trường hợp URL.parse() không được hỗ trợ.
if ("parse" in URL) {
// URL tuyệt đối
let result = URL.parse("https://mdn.go-mizu.dev/en-US/docs");
log(`[1]: ${result.href}`);
// Tham chiếu tương đối tới một URL cơ sở hợp lệ
result = URL.parse("en-US/docs", "https://mdn.go-mizu.dev");
log(`[2]: ${result.href}`);
// Tham chiếu tương đối tới một URL cơ sở hợp lệ "phức tạp"
// (chỉ scheme và domain được dùng để phân giải url)
result = URL.parse(
"/different/place",
"https://mdn.go-mizu.dev:443/some/path?id=4",
);
log(`[3]: ${result.href}`);
// Đối số URL tuyệt đối (bỏ qua URL cơ sở)
result = URL.parse(
"https://example.org/some/docs",
"https://mdn.go-mizu.dev",
);
log(`[4]: ${result.href}`);
// URL cơ sở không hợp lệ (thiếu dấu hai chấm)
result = URL.parse("en-US/docs", "https//developer.mozilla.org");
log(`[5]: ${result}`);
} else {
log("URL.parse() not supported");
}
Cuối cùng, đoạn mã dưới đây minh họa rằng các đối số không nhất thiết phải là chuỗi, bằng cách truyền một đối tượng URL cho tham số base.
if ("parse" in URL) {
// Tham chiếu tương đối với URL cơ sở được cung cấp dưới dạng đối tượng URL
result = URL.parse("/en-US/docs", new URL("https://mdn.go-mizu.dev/"));
log(`[6]: ${result.href}`);
}
Kết quả của từng kiểm tra được hiển thị bên dưới.
Thông số kỹ thuật
| Specification |
|---|
| URL> # dom-url-parse> |
Tương thích trình duyệt
Xem thêm
URL()constructor, một lựa chọn thay thế không ném lỗi nếu các tham số xác định một URL không hợp lệ- Polyfill của
URL.parse()có sẵn trongcore-js