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

js
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 url là một tham chiếu tương đối, base là bắt buộc, và được dùng để phân giải URL cuối cùng. Nếu url là một URL tuyệt đối, base được cung cấp sẽ không được dùng để tạo URL kết quả.

base Optional

Một chuỗi đại diện cho URL cơ sở dùng trong trường hợp url là 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ối urlbase. 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 URL base, 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ố urlbase 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 URLURL() constructor cung cấp thêm ví dụ minh họa cách các giá trị urlbase 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ợ.

js
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.

js
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