Extjs Ext.ux.IFrame的用法 以及父子窗口間函數相互調用


Extjs Ext.ux.IFrame的用法 以及父子窗口間函數相互調用

 

 

Ext.ux.IFrame Extjs官方提供的一個組件,可以很方便的使用。

這樣就完成了一個簡單的IFrame的使用,通過Extjs的擴展 它變成了一個組件 可以放在任何容器內 並且支持父容器的布局 很靈活

            var iframe = Ext.create("Ext.ux.IFrame", {
                frameName: 'hello',
                src: "MyJsp.jsp"
            });
            
            Ext.create("Ext.Panel", {
                layout: "fit",
                items: iframe,
                renderTo: Ext.getBody(),
                width: 300,
                height: 300,
                title: "Panel里面是一個Iframe"
            });

 

Ext.ux.IFrame 常用的幾個方法,文檔中沒有,看源碼的時候知道的!

getWin()

返回iframe的窗口對象 即(window)


 

getFrame()

返回iframe元素的dom對象 即(<iframe src="{src}" name="{frameName}" width="100%" height="100%" frameborder="0"></iframe>)


 

getDoc() 

返回iframe窗口的doucment對象


 

getBody()

返回iframe窗口的body的DOM元素


 

load(src)

加載src自定的資源


 

需要說明的問題

源代碼里有這樣一個函數 initEvents  在這個方法可以給我們的組件添加事件。me.iframeEl 是將DOM元素<iframe>...</iframe>包裝稱為 Ext.dom.Element對象

這樣就可以給這個元素添加事件了。 注意這里的load的事件[ 來自文檔:Only supported by window, frames, objects and images.]

說明只支持windon frames objects images 這4種元素

    initEvents : function() {
        var me = this;
        me.callParent();
        me.iframeEl.on('load', me.onLoad, me);
    }

 

源代碼里有這樣一個函數,當一個組件使用了renderTpl的時候,那么可以使用renderSelectors這個屬性 來為renderTpl里面的元素生成

Ext.Element對象.

 

Ext.apply(this.renderSelectors, {
  iframeEl: 'iframe'
});
Ext.create('Ext.Component', {
    renderTo: Ext.getBody(),
    renderTpl: [
        '<h1 class="title">{title}</h1>',
        '<p>{desc}</p>'
    ],
    renderData: {
        title: "Error",
        desc: "Something went wrong"
    },
    renderSelectors: {
        titleEl: 'h1.title',
        descEl: 'p'
    },
    listeners: {
        afterrender: function(cmp){
            // After rendering the component will have a titleEl and descEl properties
            cmp.titleEl.setStyle({color: "red"});
        }
    }
});

 

 

JavaScript原生父子窗口間相互調用

子窗口調用父窗口 window.parent.func();

父窗口調用子窗口 window.frames['iframeName'].func();

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM