gpt4 book ai didi

javascript - 为什么在不涉及 iframe 时检查 iframe 父函数返回 true?

转载 作者:行者123 更新时间:2023-11-30 13:28:20 25 4
gpt4 key购买 nike

情况是这样的:我们有一个 x.html 页面,它可以作为“独立”页面或另一个页面 y.html 的框架加载(相同领域)。这两个页面都有一个名为 setDirtyFlag() 的函数,它只是将一个内部标志设置为 truefalse。当 x 加载到 y iframe 中时,它还应该将父脏标志设置为相同的值。这是 xy 页面的代码:

x.html:

<html>
<head>
<script>
var setDirtyFlag=function(val) {
isDirty = val;
if (window.parent && window.parent.setDirtyFlag)
window.parent.setDirtyFlag(val);
}
setDirtyFlag(true);
</script>
</head>
<body>
This is the iframe
</body>
</html>

y.html:

<html>
<head>
<script>
var setDirtyFlag = function(val) {
alert('dirty flag set');
}
</script>
</head>
<body>
<iframe src="x.html"></iframe>
</body>
</html>

您可以在一个文件夹中创建两个文件并毫无问题地加载 y.html,您会看到一条警告,指出已设置脏标志。但是如果你加载 x.html 显然一切正常,但脚本正在进入一个递归循环,当浏览器超出其容量时该循环将结束。您可以通过在 if (window.parent && window.parent.setDirtyFlag) 中添加警报来查看它:

        if (window.parent && window.parent.setDirtyFlag) {
alert("again");
window.parent.setDirtyFlag(val);
}

为什么即使页面不在 iframe 中,也会定义 window.parent?为什么它包含对该框架中函数的引用?最重要的是,如何让它发挥作用?

最佳答案

当窗口没有父窗口时,“parent”属性是对其自身的引用。

您可以检查是否 window.parent == window

关于javascript - 为什么在不涉及 iframe 时检查 iframe 父函数返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7715711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com