Sencha Touch 2.3.1 Iframe

Я использую следующий код для вставки iframe в панель вкладок Сенча. Я загружаю аутентифицированную страницу в Iframe. Эта страница имеет форму с полями имени пользователя и пароля. Вход в систему успешно завершен, но я хочу получить ответ от iframe о состоянии входа в приложение Sencha.

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: '',
 style: 'width: 50%; height: 50%; left: 10%; top: 10%;'
 }

 ]
 });
 }
}); // application()
1 ответ

Если оба окна находятся в одном домене, вы можете создать метод callBack() для своего родителя и вызвать его в дочернем

Родительское окно:

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

Детский iFrame:

window.parent.callBack(msg)

Если дочерний iFrame находится в другом домене, браузер запретит это, и вам нужно будет использовать window.postMessage() для отправки четного из дочернего окна и window.addListener("message", function(msg) {}) для прослушивания этих событий в родительском.

Вот хороший учебник, в котором объясняется, как его использовать...

licensed under cc by-sa 3.0 with attribution.