我的 javascript 代码打开一些窗口槽:
var win = window.open();
我将 win 引用与所有其他打开的窗口一起存储在一个数组中。
一切正常,直到开启器刷新为止。
所以我想要实现的是在加载“主”窗口时取回对打开的窗口的所有引用。
为了实现这一点,我必须:
1.在卸载时保留所有引用
2. 取回加载时的引用
3.使用新的开启器更新参考
是否可以?如果是这样怎么办?
这听起来很复杂(读作:有问题)。
您所问的问题从很久以前就一直是一个问题,并且可以追溯到原始的 HTTP 协议。
简短的回答是否定的,这实际上是不可能的。当您刷新父级时,对子级的所有引用都会丢失。事实上,这是相当现实的……父母“焕然一新”……孩子们获得了父母留下的所有资源……抱歉,偏离主题了,是的。 Web 是无状态的,因此一旦页面被刷新、重新加载、关闭、打开或附加任何其他动词,该页面就会被视为new文档。
这在 chrome/FireFox 中工作正常,但在 IE 中不起作用。
像下面这样的事情是可行的,但是为了重新建立孩子/父母之间的关系,必须从孩子那里完成。下面的脚本/标记将给出一个示例。
所以我不会使用它,但它只是作为一个例子。
Steps:
- 开放儿童
- 转到儿童
- 刷新父级
- **父->子关系丢失。
- **子->父关系仍然存在。
- 链接父级
- 前往父页面
- 检查关系
- **你会看到父级现在不为空
- 留在父母身边
- 刷新孩子
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 并刷新它(即,文件上传等,其中主页“不需要”刷新)。
我远非苹果迷,但此链接确实提供了有关使用 IFrame 和脚本编写的良好见解:http://developer.apple.com/internet/webcontent/iframe.html http://developer.apple.com/internet/webcontent/iframe.html
我希望这有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)