假设我的页面上有一个 iframe,并且我有一个可以从父级或框架内触发的事件,但我需要两个页面上的侦听器在任一页面被触发时执行。实现这一目标的最佳方法是什么?
两个页面都在同一个域上,所以我认为我不需要担心同源安全策略问题。
我正在使用 jQuery,但如果需要,我很乐意使用裸 javascript。
到目前为止,我已经尝试过,提炼成一个简单的例子:
在父母身上:
HTML:
<input type="button" value="Click me"/>
<iframe src='child.html'/></iframe>
JS:
$(function() {
var $iframe = $('iframe');
$(document).on('custom_event', function() {
alert('hello from parent!');
$($iframe[0].contentWindow.document).trigger('custom_event');
});
$('input').on('click', function() {
$(document).trigger('custom_event');
});
});
在孩子身上:
HTML:
<input type="button" value="Click me too"/>
JS:
$(function() {
$('input').on('click', function() {
$(document).trigger('custom_event');
});
$(document).on('custom_event', function() {
alert('hello from child!');
$(window.parent.document).trigger('custom_event');
});
});
我希望单击任一按钮也会在另一个窗口中触发“custom_event”。即在父级中能够通过$iframe.contentWindow.document 触发框架中的事件,同样在框架中能够通过window.parent.document 触发事件,但可惜没有!没有错误、警告或任何其他线索。
我做错了什么,遗漏了一些明显的东西,还是这不可能?
谢谢你的帮助。