我知道我只能在一个窗口中触发事件。但我试过这样的: 在顶部窗口我写道:
jQuery('#some-popup').trigger('opened-popup');
在iframe我写道:
$("#some-popup", window.parent.document).bind('opened-popup', function () {
alert('ok');
});
我做错了什么?
答案 0 :(得分:2)
在相框中试试这个:
而不是
$("#some-popup", window.parent.document).bind('opened-popup', function () {
alert('ok');
});
这样做
parent.$("#some-popup", window.parent.document).bind('opened-popup', function () {
alert('ok');
});
有两个jQuery实例,一个用于父级,一个用于框架。你在父亲的jQuery上发布了这个事件,但在框架自己的jQuery中附加了它。如果你附加到子节点中父节点的jQuery,bind(或.on())应该可以工作。
编辑:你可能不需要" window.parent.document"在附加到父亲的事件后绑定。
答案 1 :(得分:0)
如果你想避免"问题"有窗口/ iframe之间的可访问性/可见性我建议你easyXDM
easyXDM是一个Javascript库,可以让您作为开发人员使用 轻松解决同源的限制 策略反过来又很容易沟通和公开javascript API跨域边界。