Sencha Touch 2.3.1 Iframe

时间:2014-03-03 06:19:05

标签: extjs sencha-touch sencha-touch-2

我正在使用以下代码在sencha touch选项卡面板中插入iframe。我正在Iframe中加载经过身份验证的页面。此页面包含用户名和密码字段的表单。页面登录成功但我希望iframe将关于登录状态的响应返回到Sencha Application。

    Ext.application({ 
    launch: function()
    {                   
        Ext.define('I', {
            extend: 'Ext.Component',
            xtype: 'iframecmp',
            config: {                       
                url     : null                      
            },      
            initialize: function() {
                console.log("Main");
                var me = this;
                me.callParent();
                me.iframe = this.element.createChild({
                    tag: 'iframe',
                    src: this.getUrl(),
                    style: 'width: 500px; height: 500px; align:middle;'
                });

                me.relayEvents(me.iframe, '*');
            }
        });



        Ext.create("Ext.tab.Panel", {
            extend: "I",
            tabBarPosition: 'bottom',
            fullscreen: true,
            items: [
                {
                    title: 'Sencha',
                    id: "main-frame",
                    name: "main-frame",
                    iconCls: 'action',
                    xtype: 'iframecmp',
                    url: 'http://testcop.bridgealliance.com/TSM_dev_Insphere',
                    style: 'width: 500px; height: 500px; left: 100px;',
                    scroll: 'vertical'
                },
                {
                    title: 'Sencha',
                    id: "main-frame2",
                    name: "main-frame2",
                    iconCls: 'action',
                    xtype: 'container',
                    html: '<iframe src="http://localhost/phpinfo.php"></iframe>',
                    style: 'width: 50%; height: 50%; left: 10%; top: 10%;'
                }

            ]
        });
    }
}); // application()

1 个答案:

答案 0 :(得分:0)

如果两个窗口位于同一个域中,您可以在父级上创建一个方法callBack(),并使用

在子级中调用它

父窗口:

window.callBack = function(msg) { console.log(msg); }

儿童iFrame:

window.parent.callBack(msg)

如果子iFrame位于其他域中,则浏览器将禁止此操作,您需要使用window.postMessage()从子窗口发送偶数并window.addListener("message", function(msg) {})来监听这些事件在父母。

这是一个很好的教程,解释了如何使用它......