Sự khác biệt giữa window.location.href và top.location.href


92

Bất cứ ai có thể cho tôi biết sự khác biệt giữa window.location.hreftop.location.href?

Và cũng có thể sử dụng cái nào ở đâu.

Và cái nào sẽ tốt hơn khi chuyển hướng sau cuộc gọi ajax trong mvc?


tôi quên đề cập rằng tôi phải chuyển hướng đến một url mới trong .net MVC .. khi tôi sử dụng top.location.href nó hoạt động trong khi window.location thì không .. bạn cũng có thể cho biết lý do tại sao không ????
Egalitarian

Câu trả lời:


125

window.location.href trả về vị trí của trang hiện tại.

top.location.href(là bí danh của window.top.location.href) trả về vị trí của cửa sổ trên cùng trong phân cấp cửa sổ. Nếu một cửa sổ không có cha, toplà một tham chiếu đến chính nó (nói cách khác, window=== window.top).

tophữu ích cả khi bạn xử lý các khung và khi xử lý các cửa sổ đã được mở bởi các trang khác. Ví dụ: nếu bạn có một trang được gọi test.htmlbằng tập lệnh sau:

var newWin=window.open('about:blank','test','width=100,height=100');
newWin.document.write('<script>alert(top.location.href);</script>');

Cảnh báo kết quả sẽ có đường dẫn đầy đủ đến test.html - không phải about: blank, đó là những gì window.location.hrefsẽ trả về.

Để trả lời câu hỏi của bạn về chuyển hướng, hãy đi với window.location.assign(url);


3
Nó có chính xác để gọi top.location.hrefmột bí danh của window.top.location.href? Tôi nghĩ rằng một biến được gọi là "toàn cục" thực sự là một cách viết tắt của một thuộc tính windowtrong khi bí danh ngụ ý rằng nó là một biến độc lập trỏ đến cùng một nơi.
just.a another.programmer

25

topđối tượng có ý nghĩa hơn bên trong khung. Bên trong khung, windowđề cập đến cửa sổ của khung hiện tại trong khi toptham chiếu đến cửa sổ ngoài cùng có chứa (các) khung. Vì thế:

window.location.href = 'somepage.html';nghĩa là tải somepage.htmlbên trong khung.

top.location.href = 'somepage.html';nghĩa là tải somepage.htmltrong cửa sổ trình duyệt chính.

Hai đối tượng thú vị khác là selfparent.



7

Mục đầu tiên thêm một mục vào lịch sử của bạn mà bạn có thể (hoặc có thể) nhấp vào "Quay lại" và quay lại trang hiện tại.

Mục thứ hai thay thế mục lịch sử hiện tại để bạn không thể quay lại mục đó.

Xem window.location:

  • assign(url): Tải tài liệu tại URL được cung cấp.

  • replace(url): Thay thế tài liệu hiện tại bằng tài liệu tại URL được cung cấp. Sự khác biệt so với assign()phương pháp là sau khi sử dụng replace()trang hiện tại sẽ không được lưu trong lịch sử phiên, có nghĩa là người dùng sẽ không thể sử dụng nút Quay lại để điều hướng đến trang đó.

window.location.href = url;

được ưa chuộng hơn:

window.location = url;

Đối với vấn đề CORS nó không hoạt động ... làm thế nào để giải quyết điều này?
Pra_A
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.