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


92

谁能告诉我之间的差异window.location.hreftop.location.href

以及在哪里使用哪一个。

在mvc中进行ajax调用后进行重定向时,哪一种更好?


我忘了提到我必须重定向到.net MVC中的新URL ..当我使用top.location.href时,它可以工作,而window.location没有..您还能说出原因吗?
平等主义者2010年

Answers:


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

要回答有关重定向的问题,请使用 window.location.assign(url);


3
它是准确的调用top.location.href一个别名window.top.location.href?我认为所谓的“全局”变量实际上是的属性简写window别名意味着它是指向同一位置的独立变量。
just.another.programmer,2012年

25

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

window.location.href = 'somepage.html';表示加载somepage.html到框架内。

top.location.href = 'somepage.html';表示somepage.html在主浏览器窗口中加载。

其他两个有趣的对象是selfparent



7

第一个在您的历史记录中添加了一个项目,您可以(或应该能够)单击“返回”并返回到当前页面。

第二个替换当前的历史记录项,因此您无法返回到它。

window.location

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

  • replace(url):用提供的URL上的文档替换当前文档。与该assign()方法的区别在于,使用replace()当前页面后将不会保存在会话历史记录中,这意味着用户将无法使用“后退”按钮导航到该页面。

window.location.href = url;

被青睐:

window.location = url;

对于CORS问题,它不起作用...如何解决呢?
Pra_A
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.