JavaScript:在不完全重新加载的情况下刷新父页面

8
在用户通过fancybox(javascript)弹出窗口登录后,我希望重新加载父页面,以便他们可以访问已登录的功能。
目前,我正在使用以下方法来完成此操作:
<a href="javascript:window.top.location.reload(true)" class="continue">Continue</a>

这个方法非常好用,但唯一的问题是它会完全重新加载整个页面:重新下载所有CSS和JavaScript等文件。

我只想正常地重新加载页面,而不是进行完全刷新。我该如何实现呢?

(我不知道精确的URL,因为登录可以通过fancybox在任何页面完成,所以我不能硬编码URL。)

2个回答

17

我在Facebook Graph API中看到了一种重新加载页面的方法,如下:

Another way of reloading the page I have seen in the Facebook Graph API is the following:


window.location = window.location

或者在你的情况下:

window.top.location = window.top.location

此解决方案重新加载页面,而不尝试重新发送POST请求。可能会有用。有关更多信息,请查看以下SO问题


啊,这非常快。只重新加载HTML。正是我想要的,谢谢。 - Alasdair
1
不幸的是,当URL中有一个井号时(至少在我的Firefox 26上),这似乎不起作用。 - tzot
1
然后你可以使用类似以下的代码:window.top.location = (window.top.location.hostname + window.top.location.pathname)。在任何浏览器中都应该能够正常工作(来源:http://www.w3schools.com/jsref/obj_location.asp)。 - decden
伙计,谢谢。如此简单而有效的解决方案! - Rossitten

1

使用:

location.replace(location.href.split('#')[0]);
< p > 在哈希上进行拆分是必需的,否则具有哈希的网址将不会刷新。 < /p> < p > 如果要在浏览器历史记录中保留先前的加载,请使用 assign 而不是 replace。 < /p> < p >href 目前根据 MDN 不受 Opera 支持。 < /p>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接