javascript - 从 Iframe 调用 EXTjs 中的父 Controller 函数

标签 javascript jquery html iframe extjs

大家好,我被这个简单的问题打动了,我再次需要你的建议:

我正在编辑一个 EXTjs 应用程序(我没有这样做)。 在这个应用程序中,在某个时候有一个 iframe,它调用一个外部 html 文件,定义为:

items: [{
        xtype: "component",
        id: "dasboardM",
        autoEl: {
            tag: "iframe",
            width: '100%',
            height: '95%',
            src: "/resources/extendpanel/dashboard.html"
        }
    }]

我需要从 iframe 调用 View Controller 中定义的函数,将调用多个函数,现在我已经设置了一个简单的测试用例,所以我为 View 文件创建了 Controller 具有如下 iframe:

Ext.define('Dor3.view.merch.MerchController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.merch',
    ...
    onIframeCall : function(){
    console.log("fromIframe!");
    }

好吧,在 iframe 中我有这段代码,这是我在 sencha 论坛上找到的一个旧线程:

$(".iframeToExt").click(function(){
    var myParent = window.parent;
    var controller = myParent.window.Dor3.app.getController('Dor3.view.merch.MerchController');
    controller.onIframeCall();
    });

这实际上不起作用,嗯,有没有办法从 iframe 调用该函数?

提前致谢。

最佳答案

您可以将消息从 iframe 发送到父窗口并编写响应它的代码。例如从 iframe 执行:

window.parent.postMessage('message', '*');

MerchController 中,您可以像这样实现 onmessage:

window.onmessage = function(ev){
    if (ev.data == 'message') {
        controller.onIframeCall();
    }
};

请注意,如果需要,您可以传递对象而不是 'message'。检查 postMessage 的 API 信息.

关于javascript - 从 Iframe 调用 EXTjs 中的父 Controller 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40426952/

相关文章:

javascript - 如何从 DOM 中删除具有特定类名的所有元素?

javascript - 引用动态加载的元素

jquery 自动完成错误

javascript - polymer 输入 header 元素没有预期的行为

javascript - jQuery 只渲染一个选择框

javascript - 有没有办法在 Tomcat 服务器中运行 Node.js 应用程序?

javascript - 如何让相对位置像 iPhone 上的固定位置一样工作?

javascript - 移动 safari 中的背景图像被拉伸(stretch)

javascript - 突出显示 <TR> 整周日期选择器

html - 无法从页面中删除边距