Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在更新源链接时动态重新加载iframe_Javascript_Iframe_Extjs - Fatal编程技术网

Javascript 如何在更新源链接时动态重新加载iframe

Javascript 如何在更新源链接时动态重新加载iframe,javascript,iframe,extjs,Javascript,Iframe,Extjs,需要动态更新iframe的源。当链接更新时,iframe应该重新加载自身。 谷歌没有为我提供有效的解决方案。 当前,我正在尝试从父面板中删除处于非活动状态的iframe,并在选项卡处于活动状态时再次添加它 var myIFrame = new Ext.BoxComponent({ autoEl:{ id:'myIFramePanel', tag:'iframe', border:false, src:'myConfiguration/getMyConfigura

需要动态更新iframe的源。当链接更新时,iframe应该重新加载自身。 谷歌没有为我提供有效的解决方案。 当前,我正在尝试从父面板中删除处于非活动状态的iframe,并在选项卡处于活动状态时再次添加它

var myIFrame = new Ext.BoxComponent({
 autoEl:{
    id:'myIFramePanel',
    tag:'iframe',
    border:false,
    src:'myConfiguration/getMyConfigurationPage'
 }
});

myConfigurationPanel = Ext.extend(Ext.Panel, {
id:'myConfigurationPanel',
layout:'fit',
frame:true,
defaults:{autoScroll:true},

listeners:{
    deactivate:function (panel) {
        console.info('-------DEACTIVATE TAB');
        panel.removeAll();
    },
    activate:function (panel) {
        console.info('-------ACTIVATE TAB');
        panel.add(myIFrame);
        var myIFramePanel = document.getElementById('myIFramePanel'); // always null
        if (myIFramePanel) {
            var updater = Ext.get(myIFramePanel).getUpdateManager();
            updater.update('newLink');
        }
    }
},

initComponent:function () {
    myConfigurationPanel.superclass.initComponent.apply(this, arguments);
 }
});

只需更改iframe的
src
属性即可对其进行更新

此外,您必须等待您的
BoxComponent
被渲染,以便iframe在DOM中可用。然后,您只能使用
getElementById
或等效工具访问它

您应该做的是添加一个方法来更改iframe src(如果已渲染),或者更改元素的
src(如果尚未渲染)。这样,您可以随时调用此方法

var myIFrame = new Ext.BoxComponent({
    autoEl:{
        id:'myIFramePanel',
        tag:'iframe',
        border:false,
        src:'myConfiguration/getMyConfigurationPage'
    }

    ,setSrc: function(src) {
        if (this.rendered) {
            // equivalent to:
            // document.getElementById('myIFramePanel').src = src;
            Ext.get('myIFramePanel').set({
                src: src
            });
        } else {
            this.autoEl.src = src;
        }
    }
});
然后,稍后:

// will always work
myIFrame.setSrc(...);

谢谢你的回答!不幸的是,它没有帮助-src链接被更新,但是当我使用iframe激活选项卡时,它不会导致从源加载信息。我注意到,如果我在container.doLayout()之后放置断点,当iframe被表示并且一切正常时。但在运行时面板是空的。。。console.info('--------------添加新的IFRAME');添加({xtype:'box',autoEl:{id:'myIFramePanel',tag:'iframe',frameborder:0,src:'myConfiguration/getMyConfigurationPage'});这个是doLayout();console.info('--------------添加了一个新的IFRAME');