Javascript 如何将事件从子窗口发送到其父窗口
我的主要目标是: 转到我的应用程序,在新选项卡中打开一个链接,在新选项卡中制作一些内容,并将事件发送到父主选项卡进行刷新。 我学到了两种技术,但它们并不能完全满足我的需要:Javascript 如何将事件从子窗口发送到其父窗口,javascript,tabs,postmessage,window.opener,Javascript,Tabs,Postmessage,Window.opener,我的主要目标是: 转到我的应用程序,在新选项卡中打开一个链接,在新选项卡中制作一些内容,并将事件发送到父主选项卡进行刷新。 我学到了两种技术,但它们并不能完全满足我的需要: postMessage-据我所知,它只在iframe上工作,不在选项卡上工作 window.opener-仅适用于只打开新窗口而不打开新选项卡的window.open(url) 如何使用选项卡将事件从子级传递到父级?我很乐意为父级和子级中的javascript代码提供一个具体示例。它应该适用于跨域(例如:www.mydoma
有没有我缺少的jQuery解决方案?我为自己做的是,我实现了一些ajax,将window2中的更改提交到数据库中。我使用JSON将新数据从数据库拉回到window1中,以下内容在chrome、firefox和ie中都适用(没有测试更多浏览器) 假设3个文件
<script>
document.domain="mydomain.com";
</script>
当您只需要重新加载parent.html时,会更容易一些。 再次在parent.html和child.html中设置document.domain-property(您不需要parent.html和dispatcher.html中的iframe) 在parent.html中还设置窗口的name属性,例如
<script>
window.name="parentTab";
</script>
…或者简单地使用“parentTarget”作为child.html中链接或表单的目标属性,方法是查看如何只谈论窗口。打开(您不想使用),而且很显然,没有简单的方法可以实现您想要的,您可能需要编写自己的框架来使用它。
我不认为你能用它访问子域,当然也不能访问其他域
使用sessionStorage
传递特定于窗口的消息的实用想法。
您可以在URL(GET)中传递内容,因此传递消息的一种方式可以是让父对象为自己生成唯一的idparentID
,为其子对象生成唯一的idchildID
(如果使用的是
,则在单击时将其与父ID一起插入URL,如果不介意
,则插入隐藏字段),然后使用sessionStorage
使用诸如parentID.childID.timeStamp等键将消息保存到父级,在父级和子级中都有一个间隔,以查找sessionStorage
键,从窗口的ID开始,然后是一个
,即父级查找parentID.
)在匹配项上,将key&value复制到一个新的var,删除(这样就不会再找到它),然后根据需要进行解析
我知道这有点罗嗦,但我认为作为一个概念来解释可能比编写工作示例代码容易得多。我相信window.open
应该返回一个新的window对象,如果您没有遇到同源策略的问题,您可以将父对象的侦听器附加到此对象上,或者设置一个interval,用于检查某些变量。@PaulS.,It window.open不会在新选项卡中打开。实际上,用户可以决定是在新选项卡中还是在新窗口中打开window.open()
s。浏览器的选项中对此有设置。它在chrome中不起作用,但感谢您的支持
<script>
document.domain="mydomain.com";
window.open('http://www.mydomain.com/dispatcher.html','hiddenframe');
</script>
<script>
document.domain="mydomain.com";
parent.fx('you just got some response');
</script>
<script>
window.name="parentTab";
</script>
<script>
document.domain="mydomain.com";
window.open('http://www.mydomain.com/parent.html','parentTab');
</script>