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

Ega*_*ian 86 javascript asp.net-mvc

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

以及在哪里使用哪一个.

在mvc中调用ajax之后重定向哪一个会更好?

jos*_*736 118

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>');
Run Code Online (Sandbox Code Playgroud)

生成的警报将具有test.html的完整路径 - 不是关于:blank,这window.location.href将返回.

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

  • 调用`top.location.href`和`window.top.location.href`的*别名*是否准确?我认为所谓的"全局"变量实际上是"window"属性*的简写,而*alias*暗示它是一个指向同一位置的独立变量. (3认同)

Sal*_*n A 24

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

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

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

另外两个有趣的对象是selfparent.


med*_*iev 9

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

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

所以top.location.href可以包含包含所有帧的"主"页面链接,而window.location.href只包含"当前"页面链接.


Sac*_*n R 7

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

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

window.location:

  • assign(url):在提供的URL处加载文档.

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

window.location.href = url;
Run Code Online (Sandbox Code Playgroud)

受到青睐:

window.location = url;
Run Code Online (Sandbox Code Playgroud)