YUI面板调整问题

时间:2009-10-07 19:55:50

标签: dialog resize yui panel overlay

使用YUI面板作为对话框时遇到问题。

我在页面加载时使用javascript创建了一个对话框对象:

$J = jQuery;
dialog = new YAHOO.widget.Panel("dialog", { width: "300px", fixedcenter: true, close: true, draggable: true, zindex: 4, modal: true, visible: false });

然后当我从页面上的事件调用我的loadDialog()函数时:

dialog.setBody("<iframe id=\"ifrDialog\" scrolling=\"no\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\"></iframe>");
dialog.hideEvent.subscribe($$F.endDialog);
dialog.render(document.body);
// Set iframe
$J("#ifrDialog").get(0).contentWindow.location.replace(url);

然后棘手的部分是我需要调整Panel的大小和IFRAME对象 AFTER IFRAME完成加载其文档。我得到了IFRAMES文档的宽度和高度,然后调整了IFRAME的大小以适应没有滚动条的文档,然后我调整了YUI面板的大小以正确包含IFRAME。

完成此操作后,我打电话给:

dialog.center();

这会将YUI模态面板正确定位在屏幕中央。第一次一切都很棒。最初当我想关闭对话框时,我试图通过使用destroy()方法完全从文档中删除它,但我一直得到一个config null引用错误,所以我现在只是隐藏对话框。当我尝试再次为同一页面显示对话框时,会出现真正的问题。 Panel正确显示,但现在浏览器窗口不应该显示垂直滚动条。

由于某种原因,Modal叠加是否会增长?有没有办法*重置* Panel或从文档中删除它,以便在需要时动态添加?

此外,相同的小部件但不同的问题。在我重新调整YUI面板并重新定位后,我遇到了另一个有趣的情况。底座没有增长到与面板的新尺寸相匹配。我不得不手动去调整底衬的大小。有更好的方法吗?

提前感谢您的帮助。

丹尼尔

1 个答案:

答案 0 :(得分:0)

你有没有想过使用:

$("yourpanel_ID").remove();  

要从DOM中删除面板,  通过这种方式,您可以随时重新开始。