Тема: Ext.ux.IFrame
Показать сообщение отдельно
  #2 (permalink)  
Старый 04.08.2015, 01:20
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Сделал временный хак. Не знаю насколько он разрешенный...

Можно ли так произвольно менять id важных элементов страницы window и document?

Ext.define("MyApp.override.ux.IFrame", {
	
	override: "Ext.ux.IFrame",
	
	loadMask: "<div style='text-align: center'>Подождите,<br/>загружается страница...</div>",
    
    getRandomSuffixId: function() {
    	return "-iframe-" + Math.round(Math.random() * 1000);
    },
    
    getRandomId: function(prefix) {
    	return prefix + this.getRandomSuffixId();
    },
	
    getDoc: function() {
        try {
        	var doc = this.getWin().document;
        	doc.id = doc.id == "ext-document" ? this.getRandomId("ext-document") : doc.id;
            return doc;
        } catch (ex) {
            return null;
        }
    },

    getWin: function() {
        var me = this,
            name = me.frameName,
            win = Ext.isIE
                ? me.iframeEl.dom.contentWindow
                : window.frames[name];
        win.id = win.id == "ext-window" ? this.getRandomId("ext-window") : win.id;
        return win;
    },
	
});


К сожалению, даже с этим хаком какие-то проблемы вылезают после загрузки второй страницы в тот же фрейм. Но с ними сложно разобраться (не ясно откуда ноги растут, удаление метода Ext.ux.IFrame.cleanupListeners не помогло):

Uncaught TypeError: Cannot read property 'hasListeners' of undefined
Ext.define.fire @ ext-all-debug.js:18692
Ext.define.doDirectEvent @ ext-all-debug.js:18779
Ext.define.onDirectEvent @ ext-all-debug.js:18749
Ext.Function.ExtFunction.bind.method @ ext-all-debug.js:4403
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.

Последний раз редактировалось khusamov, 04.08.2015 в 01:36.
Ответить с цитированием