Кто-нибудь может сказать мне разницу между window.location.href
и top.location.href
?
А также где использовать какой.
А какой будет лучше при перенаправлении после вызова ajax в mvc?
javascript
asp.net-mvc
Эгалитарный
источник
источник
Ответы:
window.location.href
возвращает расположение текущей страницы.top.location.href
(который является псевдонимомwindow.top.location.href
) возвращает расположение самого верхнего окна в иерархии окон. Если у окна нет родителя,top
это ссылка на себя (другими словами,window
===window.top
).top
полезен как при работе с фреймами, так и при работе с окнами, открытыми другими страницами. Например, если у вас есть страница, вызываемаяtest.html
следующим скриптом: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.location.href
в псевдоним изwindow.top.location.href
? Я думал , что так называемый «глобальный» переменная действительно сокращенная для свойства вwindow
то время как псевдоним означает , что независимая переменная , которая указывает на то же место.top
объект имеет больше смысла внутри фреймов. Внутри фреймаwindow
относится к окну текущего фрейма, аtop
относится к самому внешнему окну, которое содержит фрейм (-ы). Так:window.location.href = 'somepage.html';
означает загрузкуsomepage.html
внутри фрейма.top.location.href = 'somepage.html';
означает загрузкуsomepage.html
в главном окне браузера.Два других интересных объекта - это
self
иparent
.источник
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;
источник