Source: control/IframeBox.js

/**
 * Created by seeker910 on 2014/9/2.
 */
Rsd.define('Rsd.control.IframeBox', {
    extend: 'Rsd.control.Component',
    requires: ['Rsd.data.Ajax'],
    xtype:'iframe',
    ctrlTagName: 'iframe',
    src:'javascript:void(0);',//显示空白页,避免显示404
    method:'GET',
    zoom:1,
    "timeout":100,
    /**
     * iframe onload 事件
     */
    onload:null,
    /**
     * 
     * @param {*} config 
     */
    constructor: function IframeBox(config) {
        config = config || {};
        this.apply(config);
    },
    /*
    * */
    onAfterInit:function onAfterInit()
    {
        var me = this;
        this.callParent();
        
        if(!me.ctrl.element.onload)
        {
            me.ctrl.element.onload = function(evt){
                if(me.onload)
                {
                    me.funApplyByIOC(me.onload,[evt]);
                }
            };
        }
        
        
        if( me.ctrl.element.srcdoc==undefined || me.ctrl.element.srcdoc== "")
        {
            setTimeout(function(){
                me.ctrl.element.src = me.src;
            },me.timeout);
        }
        else
        {
            // 在加载失败时,延时重复加载 
            var _count = 0;
            var ajax = new Rsd.data.Ajax({url:me.src,method:me.method,dataType:'text'});
            var _fn = function ()
            {    
                 _count++;
                var _key = setTimeout(function(){
                    _fn();
                }, 200*_count);  

                ajax.request({},function(resp){ 
                    me.ctrl.element.srcdoc = resp;
                    clearTimeout(_key); 
                });  
            }

            _fn();
            
        }
         
    },
    /*
    * */
    setSrc:function setSrc(src){
        this.src = src;
        if(this.isRendered()) {
            this.ctrl.element.src = this.src;
        }
    }
});