Helpex - Trao đổi & giúp đỡ Đăng nhập
99

Trong JavaScript khi nào sử dụng window.opener/ window.parent/ window.top?

99 hữu ích 1 bình luận 168k xem chia sẻ
170
  • window.openerđề cập đến cửa sổ được gọi window.open( ... )để mở cửa sổ mà từ đó nó được gọi là
  • window.parentđề cập đến cha của một cửa sổ trong một <frame>hoặc<iframe>
  • window.topđề cập đến cửa sổ trên cùng từ một cửa sổ được lồng trong một hoặc nhiều lớp <iframe>cửa sổ phụ

Đó sẽ là null(hoặc có thể undefined) khi chúng không liên quan đến tình huống của cửa sổ giới thiệu. ("Cửa sổ giới thiệu" có nghĩa là cửa sổ mà mã JavaScript được chạy trong ngữ cảnh.)

170 hữu ích 3 bình luận chia sẻ
26

Tôi nghĩ bạn cần thêm một số ngữ cảnh vào câu hỏi của mình. Tuy nhiên, thông tin cơ bản về những điều này có thể được tìm thấy ở đây:

window.opener https://developer.mozilla.org/en-US/docs/Web/API/Window.opener

Tôi đã sử dụng window.opener chủ yếu khi mở một cửa sổ mới hoạt động như một hộp thoại yêu cầu người dùng nhập và cần chuyển thông tin trở lại cửa sổ chính. Tuy nhiên, điều này bị hạn chế bởi chính sách nguồn gốc, vì vậy bạn cần đảm bảo cả nội dung từ hộp thoại và cửa sổ mở đều được tải từ cùng một nguồn gốc.

window.parent https://developer.mozilla.org/en-US/docs/Web/API/Window.parent

Tôi đã sử dụng điều này chủ yếu khi làm việc với các IFrame cần giao tiếp với đối tượng cửa sổ chứa chúng.

window.top https://developer.mozilla.org/en-US/docs/Web/API/Window.top

Điều này rất hữu ích để đảm bảo bạn đang tương tác với cửa sổ trình duyệt cấp cao nhất. Bạn có thể sử dụng nó để ngăn một trang web khác chèn khung trang web của bạn, trong số những thứ khác.

Nếu bạn thêm một số chi tiết vào câu hỏi của mình, tôi có thể cung cấp các ví dụ khác có liên quan hơn.

CẬP NHẬT: Có một số cách bạn có thể xử lý tình huống của mình.
Bạn có cấu trúc sau:

  • Cửa sổ chính
    • Hộp thoại 1
      • Hộp thoại 2 được Mở bằng Hộp thoại 1

Khi Hộp thoại 1 chạy mã để mở Hộp thoại 2, sau khi tạo Hộp thoại 2, hộp thoại 1 đặt một thuộc tính trên Hộp thoại 2 tham chiếu đến bộ mở Hộp thoại 1.

Vì vậy, nếu "childwindow" là bạn biến cho đối tượng cửa sổ hộp thoại 2 và "cửa sổ" là biến cho đối tượng cửa sổ Hộp thoại 1. Sau khi mở hộp thoại 2, nhưng trước khi đóng hộp thoại 1, hãy thực hiện một phép gán tương tự như sau:

childwindow.appMainWindow = window.opener

Sau khi thực hiện nhiệm vụ ở trên, đóng hộp thoại 1. Sau đó, từ đoạn mã chạy bên trong hộp thoại2, bạn sẽ có thể sử dụng window.appMainWindowđể tham chiếu cửa sổ chính, đối tượng cửa sổ.

Hi vọng điêu nay co ich.

26 hữu ích 4 bình luận chia sẻ
6

top, parent, opener (cũng như window, self và iframe) đều là các đối tượng window.

  1. window.opener -> trả về cửa sổ đang mở hoặc khởi chạy cửa sổ bật lên hiện tại.
  2. window.top -> trả về cửa sổ trên cùng, nếu bạn đang sử dụng khung, đây là cửa sổ bộ khung, nếu không sử dụng khung, đây giống như cửa sổ hoặc tự.
  3. window.parent-> trả về khung mẹ của khung hiện tại hoặc khung nội tuyến. Khung mẹ có thể là cửa sổ bộ khung hoặc một khung khác nếu bạn có các khung lồng nhau. Nếu không sử dụng khung, cha giống với cửa sổ hiện tại hoặc bản thân
6 hữu ích 0 bình luận chia sẻ
1

khi bạn xử lý cửa sổ bật lên window.opener đóng một vai trò quan trọng, vì chúng ta phải xử lý các trường của trang mẹ cũng như trang con, khi chúng ta phải sử dụng các giá trị trên trang mẹ, chúng ta có thể sử dụng window.opener hoặc chúng ta muốn một số dữ liệu trên cửa sổ con hoặc cửa sổ bật lên tại thời điểm tải, sau đó một lần nữa, chúng ta có thể đặt các giá trị bằng window.opener

1 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ javascript window , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading