页面和IFRAME之间的跨平台浏览器通信(同一域)

页面和IFRAME之间的跨平台浏览器通信(同一域),iframe,cross-platform,cross-browser,cookies,communication,Iframe,Cross Platform,Cross Browser,Cookies,Communication,出于与Aweber有关新闻稿订阅的特殊目的,我在一个页面中加载了一个嵌套的IFRAME,并且两者都位于同一个域中。(许多其他stackoverflow帖子都谈到不同的域,但这个问题只涉及同一个域。)我需要一种跨平台的方式(包括IE6诞生之初的浏览器)让两者进行交流 例如,有人填写姓名和电子邮件并单击一个复选框,复选框旁边隐藏的IFRAME位于setInterval()循环中,监视该复选框。当它收到通知时,它会抓取姓名和电子邮件并发送表单 起初,我认为我可以在父页面中放置一个cookie,然后IF

出于与Aweber有关新闻稿订阅的特殊目的,我在一个页面中加载了一个嵌套的IFRAME,并且两者都位于同一个域中。(许多其他stackoverflow帖子都谈到不同的域,但这个问题只涉及同一个域。)我需要一种跨平台的方式(包括IE6诞生之初的浏览器)让两者进行交流

例如,有人填写姓名和电子邮件并单击一个复选框,复选框旁边隐藏的IFRAME位于setInterval()循环中,监视该复选框。当它收到通知时,它会抓取姓名和电子邮件并发送表单

起初,我认为我可以在父页面中放置一个cookie,然后IFRAME子对象可以隔一段时间坐在那里查看cookie。但我的测试表明这是行不通的。cookie已创建,但IFRAME无法看到它。因此,我在IFRAME中尝试了元刷新技术,但由于某种原因,它再次无法看到cookie


我能想到的唯一解决方案是,父页面将选中复选框单击(我们使用jQuery),并将AJAX数据推送到服务器的数据库中。然后,IFRAME可以通过AJAX检查返回服务器的时间间隔,以查看数据库值是否已更改,如果已更改,则对其作出反应。但这似乎是一个过度设计的解决方案,我正在寻找一种更简单的跨平台解决方案,甚至在IE6及以后的早期浏览器中也是如此。

更简单:在
iframe
中,您可以访问包含父窗口的
parent
变量。因此,您可以使用
parent.document
查找表单、读取值等。

我在IE6、IE8、all FF、Safari 4.0.4、Opera 10.50和Chrome 4.0.249.89上成功地进行了测试。好的。这就是我的解决方案。