我的页面"a"正在从链接启动页面"b"(允许我编辑"a"页面的信息(
<a href="b" target="_blank">link</a>
在"b"页面中保存后,我做了
<script type="text/javascript">
$(function() {
window.close();
})
</script>
所以我的浏览器回到了"a"页面。我想知道是否有可能检测到此事件(例如OnNavCloseing或OnFocusBack(,以便我可以使用更新的信息重新加载" a"页面?(不改变我如何编辑信息的过程^^(我真的不喜欢制作"Onfocus"事件的想法,因为我认为它会重新加载太多时间,而不仅仅是当我回到这个页面时。
欢呼。
您可以在关闭窗口时简单地调用window.opener.location.reload()
:
$(function() {
window.opener.location.reload();
window.close();
})
编辑:@putvande的想法实际上很棒。您可以使用window.opener
属性在原始窗口中触发事件,以使其知道发生了什么,例如 $(window.opener).trigger("updatePage", [arguments/variables]);
您将遇到的一个问题是,不同的选项卡或窗口都在自己的上下文中执行,从而阻止您直接影响一个脚本(即使它是同一脚本的不同实例化(。
我认为解决此问题的最简单方法(尽管这超出了我的头顶并且我还没有测试过它(是将变量添加到您的本地存储(例如 shouldUpdatePage
(。然后,您可以在脚本中将事件处理程序附加到 change 事件,以获取 HTML5 localStorage 的本地存储说明。
但即便如此,我认为这行不通,因为我认为该事件只会在实际启动对 localStorage 更改的window
上调用。当然,您仍然可以使用 setInterval()
手动检查变量,并在关闭编辑窗口时清除间隔检查。
但是,正如您显然已经期望的那样("在不更改我如何编辑信息^^的过程的情况下"(,在新窗口中处理您的编辑并不是一种非常整洁或用户友好的处理方式。(例如,在同一窗口/选项卡中执行此操作允许您使用各种location
和历史变量。回到一页?没问题: history.go(-1);
(