- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 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/
我是一名优秀的程序员,十分优秀!