使用 YUI 在 iframe 与其父级之间触发事件

发布于 2024-09-25 16:30:19 字数 275 浏览 9 评论 0原文

我有一个 iFrame 正在触发一个我希望父页面拾取的事件。本质上这个问题的反面。我可以在 iFrame 内获取该事件,因此我知道它正在触发,但父级中没有任何反应。

我正在使用 YUI 3,因此任何基于此的答案都会得到双赞,但我们非常感谢所有帮助。

I have an iFrame that is firing an event that I want the parent page to pick up. Essentially the inverse of this question. I can pick up the event inside the iFrame, so I know it's firing, but nothing happens in the parent.

I'm using YUI 3 so any answers based around this get a double-thumbs up, but all help is gratefully received.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黑白记忆 2024-10-02 16:30:19

显然事件不会跨帧传播。以下是我解决此问题的方法:

在父框架中定义此全局函数:

var fireGlobalEvent = function (e, param) {
  YUI().use('event-custom', function (Y) {
    var publisher = new Y.EventTarget();
    publisher.publish(e, {
      broadcast:  2,   // global notification
      emitFacade: true // emit a facade so we get the event target
    }).fire(param);
  });
};

然后只需在子框架中调用此函数即可触发父框架中的事件。

window.parent.fireGlobalEvent('my_custom_global_event', 'an_extra_param');

然后该事件被父模块捕获:

    Y.Global.on('my_custom_global_event', function (e, param) {
       // do something
    });

Apparently events don't propagate across frames. Here's how I'm working around it:

In the parent frame define this global function:

var fireGlobalEvent = function (e, param) {
  YUI().use('event-custom', function (Y) {
    var publisher = new Y.EventTarget();
    publisher.publish(e, {
      broadcast:  2,   // global notification
      emitFacade: true // emit a facade so we get the event target
    }).fire(param);
  });
};

Then just call this in the child to trigger the event in the parent.

window.parent.fireGlobalEvent('my_custom_global_event', 'an_extra_param');

Then the event is caught by parent modules with:

    Y.Global.on('my_custom_global_event', function (e, param) {
       // do something
    });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文