微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript:持久化窗口对象引用?

我的 javascript代码打开了一些窗口:

var win = window.open();

我将win参考存储在一个包含所有其他打开窗口的数组中.
一切正常,直到揭幕战焕然一新.

所以我想要实现的是在加载“主”窗口时取回所有对打开的窗口的引用.

要实现这一点,我必须:
1.在卸载时保留所有引用
2.在加载时获取引用
3.使用新的开启者更新引用

可能吗?如果是这样的话?

解决方法

这听起来很复杂(读:有问题).

你问的问题一直是一个问题,因为回过头来回到最初的HTTP协议.

简短的回答是否定的,这是不可能的.刷新父级时,对子级的所有引用都将丢失.在所有情况下,这是非常现实的….父母是“刷新”….孩子得到父母留下的所有资源…对不起,关闭主题,好吧,是的. Web是无状态的,因此一旦刷新页面,重新加载,关闭,打开或附加任何其他动词,该页面将被视为新文档.

这在chrome / FireFox中运行良好,但在IE中不起作用.

像下面这样的东西可以工作,但为了重新连接孩子/父母之间的关系,必须从孩子那里完成.下面的脚本/标记将举例说明.
 所以我不会用它,但它只是作为一个例子.

脚步:

>开放孩子
>去儿童
>刷新父级
> **父母 – >儿童关系丢失了.
> **儿童 – >父母关系仍然存在.
>链接父母
>转到父页面
>检查关系
> **您将看到父级现在不为空
>留在父母身边
>刷新孩子

HTMLPage.htm:

<input type="button" onclick="openChild();" value="Open Child" />
<input type="button" onclick="refreshParent();" value="Refresh Parent" />
<input type="button" onclick="linkParent();" value="Link Parent" />
<input type="button" onclick="checkRelationship();" value="Check Relationship" />
<input type="button" onclick="refreshChild();" value="Refresh Child" />


<script type="text/javascript" language="javascript">

    var child;    
    function openChild() {
        child = window.open("HTMLPage.htm");
    }

    function refreshParent() {
        alert("refreshing parent");
        window.opener.location.href = window.opener.location.href;
    }

    function linkParent() {
        window.opener.child = window;
        checkRelationship();
    }

    function checkRelationship() {
        alert("Parent: " + window.opener + ".   Children:" + child);
    }

    function refreshChild() {
        child.location.href = child.location.href;
    }


</script>

那么我的下一个问题是:

你想用这个来实现什么?当情况真的需要时,我全都是使用模态窗口/弹出窗口,但是你需要它们的数组吗?

页面“需要”刷新吗?你可以在父页面上粘贴iframe并刷新(IE.文件上传等主页不需要刷新的地方).

我远不是一个苹果粉丝男孩,但这个链接确实提供了使用IFrames脚本编写的很好的见解:http://developer.apple.com/internet/webcontent/iframe.html

我希望这有帮助.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐