【发布时间】:2011-12-03 07:59:42
【问题描述】:
目前,当我希望向用户显示一个对话框时,比如编辑从主窗口中选择的对象,我创建了一个 jQueryUI 对话框并将其中的 iframe 插入到处理编辑的页面中。
我发现这非常有效,因为对话框页面可以有自己的脚本、样式和元素 ID。我不需要担心我的对话框和父页面之间可能出现的任何冲突。
我发现的唯一有点尴尬的部分是父窗口和子对话框之间的通信。不幸的是,子 iframe 通常需要了解其父级。我发现这是必要的,因此它可以执行诸如关闭其对话框(位于父窗口中)或告诉父级在成功编辑后刷新其项目列表等操作。
理想情况下,孩子不会知道它的父母,但独立页面的好处,可以像任何其他页面一样进行测试而没有冲突似乎值得。
不过,我经常读到 cmets 不鼓励使用 iframe。我不确定这是否真的不是最佳实践,或者有些人只是不想使用它们。
不过,我一直在寻求改进我做事的方式。如果对这类事情使用 ajax 确实是最佳实践,那么对于一个非平凡的对话框,它是如何完成的?
我可以想象使用 ajax 请求对话框的标记并将其插入对话框,但我不知道如何管理所有冲突、脚本、css、元素 ID 等以进行复杂的对话框合并带有现有页面。
是否有任何示例说明应该如何做到这一点?或者当您的对话框不是很简单时,iframe 真的更好吗?
感谢您的任何想法或帮助!
【问题讨论】:
-
听起来您只需要打开一个单独的浏览器窗口或选项卡。
-
我不能。这会破坏模态对话框的目的,并且不会提供我想要的 UI。
标签: jquery html asp.net-mvc ajax