Sencha Touch 2.3.1 Iframe
问题描述:
我正在使用以下代码在sencha触摸标签面板中插入iframe。我正在Iframe中加载已认证的页面。此页面包含用户名和密码字段。页面登录成功,但我想从iframe回复到Sencha应用程序的登录状态的响应。Sencha Touch 2.3.1 Iframe
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()
答
如果这两个窗口在同一个领域,你可以创建你的父母的方法回调(),并与
父窗口调用它的孩子:
window.callBack = function(msg) { console.log(msg); }
儿童iFrame:
如果孩子iFrame在不同的域中,那么浏览器将禁止此操作,您需要使用window.postMessage()
才能从子窗口发送偶数,并且需要使用window.addListener("message", function(msg) {})
来收听父母中的这些事件。
这里有一个很好的教程,说明如何使用它......