gpt4 book ai didi

在子 iFrame 中加载新文档后,javascript window.top.postMessage 或 window.parent.postMessage 不起作用

转载 作者:行者123 更新时间:2023-11-29 14:52:04 27 4
gpt4 key购买 nike

我有一个包含 iFrame 的基本 HTML 页面。当父级加载并且 iFrame 在其中时,iFrame 执行以下 javascript:

myParent = window.top;
if (window.parent != window.top) {
myParent = window.parent;
}

dataString = '{"function":"$.SmartMenus.hideAll();"}';
myParent.postMessage(dataString, window.origin);

如果单击 iFrame 内的链接并在包含完全相同的 javascript 代码的同一 iFrame 中加载新文档,则不会执行相同的代码。显然 window.top 或 window.parent 不再在正确的范围内。

我试过 window.opener 但这也不起作用。我目前正在 Windows 7 上的 FireFox 29.0.1 中进行测试。

非常感谢任何帮助!

更新我应该提到这是一个跨域请求。但是,在 iFrame 中加载的页面与加载到 iFrame 中的初始页面具有相同的域。

在 Chrome 中进行测试时,我发现出现以下错误:无法在“DOMWindow”上执行“postMessage”:提供的目标来源 (“http:/secondDomain:51990”) 与收件人窗口的来源不匹配。

为什么不能在 iFrame 中发布来自同一域的消息?据我了解,父级可以监听来自任何域的 postMessages,开发人员可以根据发出请求的域的来源来选择对消息采取行动。

最佳答案

好的。该问题与窗口对象的范围无关。问题是原点传递给父级不再匹配父级的域。这是我构建原始域的方式的错误。我选择了“*”通配符,并在收到消息时在父端按域过滤请求。

关于在子 iFrame 中加载新文档后,javascript window.top.postMessage 或 window.parent.postMessage 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24152187/

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