Bất cứ ai có thể cho tôi biết sự khác biệt giữa window.location.href
và top.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?
Bất cứ ai có thể cho tôi biết sự khác biệt giữa window.location.href
và top.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?
Câu trả lời:
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, top
là một tham chiếu đến chính nó (nói cách khác, window
=== window.top
).
top
hữ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.html
bằ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.href
sẽ 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);
top.location.href
mộ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 window
trong khi bí danh ngụ ý rằng nó là một biến độc lập trỏ đến cùng một nơi.
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 top
tham 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.html
bên trong khung.
top.location.href = 'somepage.html';
nghĩa là tải somepage.html
trong cửa sổ trình duyệt chính.
top
đề cập đến đối tượng cửa sổ chứa tất cả các khung hiện tại (cha của phần còn lại của cửa sổ). window
là hiện tại window
.
http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific
vì vậy top.location.href
có thể chứa liên kết trang "chính" chứa tất cả các khung, trong khi window.location.href
chỉ chứa liên kết trang "hiện tại".
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;