在先前打开的页面关闭时重新加载页面

时间:2014-08-13 11:49:52

标签: jquery events onfocus

我的页面" a"正在推出一个页面" b"从链接(允许我编辑" a"页面的信息)

<a href="b" target="_blank">link</a>

保存在&#34; b&#34;我做的页面

<script type="text/javascript">
    $(function() {
       window.close();
    })
</script>

所以我的浏览器回到了&#34; a&#34;页。 我想知道是否有可能检测到这个事件(比如OnNavClosing或OnFocusBack),所以我可以重新加载&#34; a&#34;页面更新的信息? (不改变我如何编辑信息的过程^^) 我不太喜欢制作&#34; Onfocus&#34;事件,因为我认为它会重新加载太多时间,而不仅仅是当我回到这个页面时。

欢呼。

2 个答案:

答案 0 :(得分:0)

您可以在关闭窗口时致电window.opener.location.reload()

$(function() {
    window.opener.location.reload();
    window.close();
})

答案 1 :(得分:0)

编辑:@ putvande的想法实际上很棒。您可以使用window.opener属性在原始窗口触发事件,让它知道发生了什么,例如: $(window.opener).trigger("updatePage", [arguments/variables]);


您将遇到的一个问题是,不同的选项卡或窗口都在其自己的上下文中执行,从而阻止您直接影响另一个脚本(即使它是同一脚本的不同实例)。

我认为解决这个问题的最简单方法(虽然这不是我的头脑而且我还没有测试过)是在本地存储中添加一个变量(例如shouldUpdatePage)。然后,您可以在脚本中将事件处理程序附加到localstorage explanation of HTML5 localStorage的change事件。

但即便如此,我也不认为这会有用,因为我认为事件只会在实际启动localStorage更改的window上调用。当然,您仍然可以使用setInterval()手动检查变量,并在关闭编辑窗口时清除间隔检查。

但是,正如您显然已经期待的那样(&#34;如果不改变我编辑信息的过程^^&#34;),在新窗口中处理您的编辑不是很整洁或用户友好处理这个问题的方法。 (例如,在同一窗口/选项卡中执行此操作可让您使用各种location和历史变量。返回一页?没问题:history.go(-1);