Может ли кто-нибудь сказать мне разницу между window.location.href
и top.location.href
?
А также, где использовать какой.
И какой из них будет лучше при перенаправлении после вызова ajax в mvc?
Может ли кто-нибудь сказать мне разницу между window.location.href
и top.location.href
?
А также, где использовать какой.
И какой из них будет лучше при перенаправлении после вызова ajax в mvc?
window.location.href
возвращает местоположение текущей страницы.
top.location.href
(который является псевдонимом window.top.location.href
) возвращает местоположение самого верхнего окна в иерархии окон. Если в окне нет родителя, top
является ссылкой на себя (другими словами, window
=== window.top
).
top
полезен как при работе с фреймами, так и при работе с окнами, открытыми другими страницами. Например, если у вас есть страница с именем test.html
со следующим script:
var newWin=window.open('about:blank','test','width=100,height=100');
newWin.document.write('<script>alert(top.location.href);</script>');
Полученное оповещение будет иметь полный путь к test.html – не about: blank, что возвращает window.location.href
.
Чтобы ответить на вопрос о перенаправлении, перейдите к window.location.assign(url);
top
объект имеет больше смысла внутри фреймов. Внутри кадра window
относится к текущему окну кадра, а top
относится к самому внешнему окну, содержащему кадр (ы). Итак:
window.location.href = 'somepage.html';
означает загрузку somepage.html
внутри кадра.
top.location.href = 'somepage.html';
означает загрузку somepage.html
в главном окне браузера.
top
относится к объекту окна, который содержит все текущие кадры (отец остальных окон). window
- текущий window
.
http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific
поэтому top.location.href
может содержать ссылку на главную страницу, содержащую все кадры, а window.location.href
просто содержит ссылку на текущую страницу.
Первый добавляет элемент в вашу историю, в котором вы можете (или должны быть в состоянии) нажать "Назад" и вернуться к текущей странице.
Второй заменяет текущий элемент истории, поэтому вы не можете вернуться к нему.
См. window.location
:
assign(url)
: Загрузите документ по указанному URL.
replace(url)
: замените текущий документ на тот, который указан по указанному URL. Отличие от метода assign()
заключается в том, что после использования replace()
текущая страница не будет сохранена в истории сеансов, то есть пользователь не сможет использовать кнопку "Назад", чтобы перейти к ней.
window.location.href = url;
предпочтительнее:
window.location = url;