我的主要目标是:
将我的应用程序,在新标签页中打开链接存在,使新标签的东西,并发送一个事件到父主选项卡刷新。
我已经学会2项技术,没有做什么,我需要:
- postMessage的 - 工程,据我只知道在IFRAME而不是标签
- window.opener - 只有window.open(URL)的作品打开只新窗口,而不是新的选项卡。
如何传递从孩子使用标签父的事件? 我很高兴在父母和子女的JavaScript代码的具体例子。 应该跨域合作(例如:www.mydomain.com和bills.mydomain.com)。
有AA jQuery的解决方案,我很想念?
下面对我的作品在Chrome,火狐,IE浏览器(没有测试更多的浏览器)
假设3个文件
- (www.mydomain.com/parent.html),其中包含了“main'文档与链接的页面
- (bills.mydomain.com/child.html),将通过链接打开的页面
- (www.mydomain.com/dispatcher.html)后述
在首先3个文件的域属性设置为mydomain.com
<script>
document.domain="mydomain.com";
</script>
在parent.html创建如“hiddenframe”的名称属性隐藏的iframe。 还可以创建可后来收到回复一些功能。
parent.html现在应该是这样的:
<script>
document.domain="mydomain.com";
function fx(msg)//receives the response
{
alert(msg)
}
</script>
<iframe name="hiddenframe" style="display:none"></iframe>
<a href="http://bills.mydomain.com/child.html" target="_blank">click</a>
在child.html你现在就可以将文档加载到里面parent.html隐藏的iframe
<script>
document.domain="mydomain.com";
window.open('http://www.mydomain.com/dispatcher.html','hiddenframe');
</script>
(不要在使用的脸混淆window.open()
在这里,不会打开一个新窗口,页面会被加载到parent.html的iframe)
在dispatcher.html你现在可以调用内部parent.html功能
<script>
document.domain="mydomain.com";
parent.fx('you just got some response');
</script>
当你只需要重新加载parent.html这是一个稍微容易一些。
再次设置在parent.html和child.html的document.domain的属性(你不需要在parent.html iframe和dispatcher.html)
在parent.html还设置窗口,如名称,属性
<script>
window.name="parentTab";
</script>
在child.html你现在可以访问parentTab
-window(TAB)
<script>
document.domain="mydomain.com";
window.open('http://www.mydomain.com/parent.html','parentTab');
</script>
......或者干脆用“parentTarget”作为child.html链接或形式的目标特性
我做了我自己什么,我Implemeted一个一些Ajax提交从窗口2变为数据库。 我Implemeted一个JSON从数据库中获取新的数据返回到窗口1
通过参观了解的问题类似只谈window.open
(你不想使用)和AFAIK有没有简单的方法来获得在同一域中的所有窗口 ,你想要的东西,你可能需要编写自己的框架做到这一点使用window.sessionStorage
。
我不认为你可以访问它的子域,绝对不是到其他领域,虽然。
切合实际的想法,使用通过特定的窗口消息sessionStorage
..
你可以通过事物的URL(GET),这样的方式来传递消息可能使父母产生一个唯一的ID为自己parentID
,因为它的唯一ID的孩子childID
(这与沿插入URL parentID
上点击如果您使用的是<a>
,或隐藏字段,如果你不介意<form method="GET">
然后用sessionStorage
消息保存到使用键,如父parentID.childID.timeStamp
,有一个间隔两个父母和孩子,以查找sessionStorage
键启动与窗口的ID,然后一个.
(即父寻找parentID.
在比赛的关键和值复制到一个新的变种,删除(所以它不会再次找到),然后解析为所需。
我知道这是一个有点罗嗦,但我认为这是有可能更容易为比编写工作示例代码中的概念来解释。