它看起来像,改变iframe的父导致重新加载。所以我的想法是将iframe附加到其他父项,并将其定位在portlet上。以下是示例portlet代码。
{
title: 'Another Panel 2',
tools: tools,
html: '<div class="frame-bind" style="min-height: 200px;"> </div>',
listeners: {
afterrender: function(sender) {
this.portal = this.findParentByType('portal');
var container = this.portal.body;
var html = '<iframe src="http://www.onet.pl" style="position: absolute; border: none;"></iframe>';
this.iframe = Ext.DomHelper.append(container, html, true);
this.portal.on('beforedragover', this.beforedragoverHandler, this);
this.portal.on('drop', this.dropHandler, this);
},
destroy: function() {
if (this.iframe !== undefined) {
this.iframe.remove();
}
this.portal.un('beforedragover', this.beforedragoverHandler, this);
this.portal.un('drop', this.dropHandler, this);
delete this.portal;
},
afterlayout: function(sender, layout) {
this.positionIframe.defer(1, this);
}
},
beforedragoverHandler: function(sender) {
if (this !== sender) { return; }
this.iframe.setStyle('visibility', 'hidden');
},
dropHandler: function(sender) {
if (this !== sender) { return; }
this.positionIframe();
this.iframe.setStyle('visibility', 'visible');
},
positionIframe: function() {
this.iframe.setLocation(this.body.getLeft(), this.body.getTop());
this.iframe.setWidth(this.body.getWidth());
this.iframe.setHeight(this.body.getHeight());
}
}
这是一种工作,除了一些位置计算问题,我无法解决。 positionIFrame()将为新坐标返回0。 afterLayout()在最后一次完成放置时调用它,我假设获得最准确的坐标,但不安静地获得正确的坐标。门户网站大量脱离了债券。当我调整我的浏览器的大小(只是推动它),重新计算框架大小发生,并将所有的门户再次进入他们的适当位置。任何想法,从我的描述可能是什么? – Elijah 2012-01-24 16:45:03