【问题标题】:When are modal dialogs truly necessary?什么时候真正需要模态对话框?
【发布时间】:2008-12-12 00:00:52
【问题描述】:

模态对话框是邪恶的,但我一直在阅读“你应该删除模态对话框如果可能

什么时候不能删除模态对话框?我的意思是,有哪些真正的模态任务迫使我们使用邪恶的模态对话框?

最常见的示例是“您要保存吗?”我认为这是让用户点击保存而不是记住用户输入是神圣的的概念的问题。如果您只是自动保存并能够“撤消”或进行修订,那么您无需询问用户是否要保存。

  • “您确定要删除吗?”取消删除
  • “您确定要退出吗?”你为什么要问这个?你就这么虚荣吗?

为什么我们需要模态对话框?

编辑

Webs 应用不算在我的书中,除非他们在浏览器中编写自己的 UI 窗口系统。 Web 应用程序没有设置与桌面应用程序相同的工具。

编辑 2

我的问题与标记为重复的问题略有不同。我觉得模态对话框并不是最好的解决方案。提到的问题假设存在这种情况。

重复:When Is Modal UI acceptable?

【问题讨论】:

  • 如果您回应 Lynx 的“退出?”使用“N”,它会响应,“优秀!”
  • 对不起骗子,输入问题时没有出现。我称之为对话框,他们使用 UI...
  • 没问题。无论如何,我缺乏关闭它的能力。我只是想指出这一点,以便当权者可以决定他们想做什么。有时它们会打开,有时则不会。
  • 不幸的是,您的 Edit#2 也使问题具有争议性.. :-(

标签: user-interface usability modal-dialog


【解决方案1】:

模态对话框用例

  • 阻止应用程序流程,直到输入继续所需的信息,例如登录过程中的密码。
  • 在集中式对话框中收集应用程序配置选项。在这种情况下,通常会在关闭对话框时应用更改,并在进行编辑时禁用对应用程序的访问。
  • 警告当前操作的效果不可逆。这是模态对话框的常见交互模式,但可用性专家也批评它对其预期用途(防止破坏性操作中的错误)无效,并且存在更好的替代方案。

(来源:Wikipedia

当我使用它们时

在某些情况下,阻止他们做愚蠢的事情是绝对必要的。我的公司有一个网络应用程序,用户有时会在完成工作之前离开页面。如果他们还没有保存他们的工作,我们会使用 Modal(标准的 onbeforeunload JavaScript 函数)提示他们。

否则,如果可以的话,我不会使用 Modals,我讨厌应用程序从我正在做的事情中窃取焦点。

编辑:当他们离开页面时,我们不会自动为他们保存工作。我们在其他时间这样做,但不是在他们离开页面时,因此是 Modal。我确实写了可以在他们离开页面时进入并保存他们的工作的可能,但是实现它并不是一个“好”的主意,特别是如果他们不小心删除了他们的工作并且不希望它自动保存。

【讨论】:

  • 我不能原谅网络应用程序使用模式对话框,因为与桌面应用程序相比,它们有一部分 UI 工具。
  • 如果我能帮上忙的话。我希望能够使用全套桌面工具制作网络应用,并具有网络应用的透明安全性
  • 那么你的自动保存实现是有缺陷的。它不能简单地覆盖现有信息。它至少需要 1 次修订才能撤消。
  • 你说得对。然而,这正是我们的客户想要的,这就是我们得到的规格。我提出了同样的问题,但我怀疑它会改变。
  • "阻塞应用程序流直到输入需要继续的信息..." -- 这不是模态对话框的用例,这是原因 它们是邪恶的,必须避免。
【解决方案2】:

唯一比用户输入更神圣的是我知道的任何文件。除非我告诉你,否则你不应该修改任何包含实现细节的文件。因此像“你想保存吗?”这样的框。退出是必须的,因为我可能想要不保存。

【讨论】:

  • 这就是为什么我说自动保存和撤消。我永远不会覆盖用户输入的唯一副本。
  • 自动保存到哪里?除非我要求你这样做,否则我什至不想碰我的文件。您可以在某处使用应用程序数据文件,但不要触摸我的文档!
  • 当然,必须有一种不接触您的文件的聪明方法,我们不需要在这里解决这个问题。
  • 一个用户可能很清楚他们已经搞砸了,只是想直接退出并重新开始,那么自动保存(即使是撤消)将是一个问题,你怎么知道他们的意思去做?当他们再次打开它时,您是否向他们展示了差异,这似乎比靠近我的模式更像 PITA。 $.02
  • 虽然我当然理解你的立场,但 BCS - 我同意! - 可用性研究一致表明,大多数用户希望他们的操作默认是持久的,这基本上意味着持续保存(无限撤消)。
【解决方案3】:

想象一个需要为某些操作打开对话框的应用程序。现在想象这些将是非模态对话框:当一个对话框打开时,您可以更改选择,甚至更糟 - 调用一个不同的命令,该命令本身会打开另一个对话框。现在想象这些对话框将是模态的:那么您将不得不关闭对话框才能继续 - 您无法进入对话框下选择更改或两个命令正在等待输入的状态。

【讨论】:

  • 是的,如果您使用非模态对话框而不考虑会发生这种情况。但是,当您在一个对话框中更改某些内容时,它应该会自动更新其他相关对话框。
  • 这不可能适用于所有场景。
猜你喜欢
  • 1970-01-01
  • 2018-08-18
  • 1970-01-01
  • 2016-07-27
  • 2010-12-13
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
相关资源
最近更新 更多