0

将 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);

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

完成后,我打电话给:

dialog.center();

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

模态覆盖是否由于某种原因而增长?有什么方法可以*重置*面板或将其从文档中删除,以便在需要时动态添加它?

此外,相同的小部件但不同的问题。在调整 YUI 面板的大小和位置后,我遇到了另一个有趣的情况。地垫没有增长到与专家组的新尺寸相匹配。我不得不手动调整底层的大小。有一个更好的方法吗?

在此先感谢您的帮助。

丹尼尔

4

1 回答 1

0

你有没有想过使用:

$("yourpanel_ID").remove();  

要从 DOM 中删除面板,您可以随时从一个新面板开始。

于 2009-12-10T17:59:14.413 回答