Різниця між window.location.href та top.location.href


92

Хтось може сказати мені різницю між window.location.hrefі top.location.href?

А також де використовувати який.

І який з них буде кращим при перенаправленні після виклику ajax у mvc?


я забув згадати, що мені довелося перенаправити на нову URL-адресу в .net MVC .. коли я використовував top.location.href це спрацьовувало, тоді як window.location ні .. чи можете ви також сказати причину, чому ????
Егалітарій

Відповіді:


125

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 - не про: blank, тобто те, window.location.hrefщо повернеться.

Щоб відповісти на своє запитання щодо переадресації, скористайтесь window.location.assign(url);


3
Є чи це правильно назвати top.location.hrefв псевдонім з window.top.location.href? Я думав , що так званий «глобальний» змінна дійсно скорочена для властивості в windowтой час як псевдонім означає , що незалежна змінна , яка вказує на те ж місце.
just.another.programmer

25

topоб'єкт має більше сенсу всередині фреймів. Всередині кадру, windowвідноситься до вікна поточного кадру, тоді як topдо самого зовнішнього вікна, що містить кадри. Так:

window.location.href = 'somepage.html';означає навантаження somepage.htmlвсередині рами.

top.location.href = 'somepage.html';означає завантаження somepage.htmlв основному вікні браузера.

Ще два цікаві об’єкти - це selfі parent.


9

topвідноситься до об'єкта вікна, який містить усі поточні кадри (батько решти вікон). window- струм window.

http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific

тому top.location.hrefможе містити посилання на головну сторінку, що містить усі кадри, тоді як window.location.hrefпросто містить посилання на поточну сторінку.


7

Перший додає елемент до вашої історії, завдяки чому ви можете (або повинні мати можливість) натиснути «Назад» і повернутися до поточної сторінки.

Другий замінює поточний елемент історії, тому ви не можете до нього повернутися.

Дивіться window.location:

  • assign(url): Завантажте документ за вказаною URL-адресою.

  • replace(url): Замініть поточний документ на документ за вказаною URL-адресою. Відмінність від assign()методу полягає в тому, що після використання replace()поточної сторінки не буде збережено в історії сеансів, тобто користувач не зможе скористатися кнопкою Назад для переходу до неї.

window.location.href = url;

надає перевагу:

window.location = url;

Для випуску CORS він не працює ... як це вирішити?
Pra_A
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.