我正在使用以下代码在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()
答案 0 :(得分:0)
如果两个窗口位于同一个域中,您可以在父级上创建一个方法callBack(),并使用
在子级中调用它父窗口:
window.callBack = function(msg) { console.log(msg); }
儿童iFrame:
window.parent.callBack(msg)
如果子iFrame位于其他域中,则浏览器将禁止此操作,您需要使用window.postMessage()
从子窗口发送偶数并window.addListener("message", function(msg) {})
来监听这些事件在父母。
这是一个很好的教程,解释了如何使用它......