Javascript 如何在更新源链接时动态重新加载iframe
需要动态更新iframe的源。当链接更新时,iframe应该重新加载自身。 谷歌没有为我提供有效的解决方案。 当前,我正在尝试从父面板中删除处于非活动状态的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
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');