有人能告诉我window.location.href
和top.location.href
之间的区别吗?
还有,在什么情况下使用哪一个。
在MVC中进行AJAX调用后重定向时,哪一个更好?
有人能告诉我window.location.href
和top.location.href
之间的区别吗?
还有,在什么情况下使用哪一个。
在MVC中进行AJAX调用后重定向时,哪一个更好?
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
将返回about:blank。
至于重定向问题,可以使用window.location.assign(url);
top.location.href
称为 window.top.location.href
的 别名 是否准确?我认为所谓的“全局”变量实际上是 window
对象的一种缩写,而 别名 意味着它是一个指向相同位置的独立变量。 - just.another.programmer第一个方法会向您的浏览器历史记录中添加一个条目,您可以(或应该能够)单击“后退”按钮并返回到当前页面。
第二个方法会替换当前的历史记录项,因此您无法返回到它。
请参见window.location
:
assign(url)
:加载提供的URL处的文档。
replace(url)
:用提供的URL处的文档替换当前文档。与assign()
方法的不同之处在于,使用replace()
后,当前页面将不会保存在会话历史记录中,这意味着用户将无法使用“后退”按钮导航到该页面。
window.location.href = url;
被青睐于:
window.location = url;
top
指的是包含所有当前帧(其余窗口的父窗口)的窗口对象。而window
则是当前的窗口。
http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific
因此,top.location.href
可以包含包含所有框架的“主”页面链接,而window.location.href
只包含“当前”页面链接。