Bất cứ ai có thể cho tôi biết sự khác biệt giữa window.location.hrefvà 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.hrefvà 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, 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);
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.
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.
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ổ). windowlà hiện tại window.
http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific
vì vậy top.location.hrefcó thể chứa liên kết trang "chính" chứa tất cả các khung, trong khi window.location.hrefchỉ 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;