window.location.href和top.location.href之间的区别

任何人都可以告诉我window.location.hreftop.location.href之间的区别?

还有哪里可以使用哪一个。

在ajax调用mvc之后redirect哪一个会更好?

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的完整path – 而不是 about:blank,这是window.location.href将返回的内容。

要回答你关于redirect的问题,请使用window.location.assign(url);

top对象在帧内更有意义。 在一个框架内, window是指当前框架的窗口,而top是指包含框架的最外面的窗口。 所以:

window.location.href = 'somepage.html'; 意味着在框架内加载somepage.html

top.location.href = 'somepage.html'; 意味着在主浏览器窗口中加载somepage.html

另外两个有趣的对象是selfparent

top指的是包含所有当前帧的窗口对象(其余窗口的父亲)。 window是当前window

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

所以top.location.href可以包含包含所有框架的“主”页面链接,而window.location.href只包含“当前”页面链接。

第一个向您的历史添加一个项目,你可以(或应该能够)点击“返回”并返回到当前页面。

第二个replace当前的历史项目,所以你不能回到它。

请参阅window.location

  • assign(url) :在提供的URL中加载文档。

  • replace(url) :用提供的URLreplace当前文档。 与assign()方法的不同之处在于,在使用replace() ,当前页面将不会保存在会话历史logging中,这意味着用户将无法使用“后退”button导航到该页面。

 window.location.href = url; 

比以往更受青睐:

 window.location = url;