2008-12-12 61 views
35

回复最近的问题when are modal dialogs truly necessary?。为什么模态对话框是邪恶的?是不是因为人们不读它们?因为他们经常执行得如此糟糕?还有别的吗?为什么模态对话框是邪恶的?

+1

http://en.wikipedia。org/wiki/Modal_window#Criticisms http://everything2.com/title/Modal+dialog+box Joel和Jeff Atwood都有关于此主题的帖子(通过google很容易找到) – 2010-01-14 04:42:37

+0

我感觉很多下降问题在StackOverflow中关闭:(我认为问题和答案的高评分表明他们是有用的 – Lamy 2014-12-16 11:45:32

+0

@Larry,显然不是。虽然这个封闭的,没有建设性的问题刚刚成为一个着名的问题的黄金徽章,我认为这将适合程序员网站更好,但当时有人问,有没有一个程序员的网站 – thursdaysgeek 2015-04-02 15:18:10

回答

52

关于到目前为止的答案正在处理的确认对话框中的瑕疵不模式对话框,的一半。虽然绝大多数确认对话框是模态的,但这并不意味着这两个术语是同义词。

一个国防部人对话是一个这使程序为特定模式并且不允许你做任何不符合该模式,而它是开放的。在最常见的实现中,这意味着您无法访问任何其他窗口。

这是邪恶的。

考虑一个地址簿应用程序。假设你在地址簿中有一个现有人,并且你想添加他们的室友。

  • 如果“添加人员”对话框是非模态的,则可以在旧记录和新记录之间来回翻转以复制和粘贴数据。
  • 如果“添加人员”对话框为模态,则在添加对话框打开时,您无法对旧记录执行任何操作。在选择“添加”之前,您可以选择要复制的内容,但只是一件事。其他一切都必须手动重新输入。

在极少数情况下,您会碰到一件真正必须在一块完成的事情,而不允许用户在完成任务之前分歧。模态对话框适用于这种情况。 但这些情况非常罕见!这基本上是这个问题引用的其他线程的点。

35

人们不读它们,这是一件好事。你希望人们围绕你的用户界面形成习惯,但在弹出窗口中有一个重要的选择就是让用户点击OK。

他们中断用户,他们阻止用户做其他事情。

如果您想从主窗口复制并粘贴某些内容,该怎么办?如果您想在模态对话框中复制信息,该怎么办?如果你不在乎

只是比较IE的查找对话框VS Firefox的

比较IE的“你要我们为您记住这个密码?”到Firefox

+5

IE的查找框让我疯狂,因为我被宠坏了FF。 – Karl 2008-12-12 01:54:11

4

我不喜欢它们的原因之一是因为它们以串行方式显示信息(一次一个信息)而不是并行(您需要一次看到的所有信息),并行将允许用户选择他们想要查看的地方,因为在串行中你几乎迫使他们选择一个选项。

此外他们还打断了用户的控制流(例如从你工作的对象中偷取焦点),这实际上我不喜欢这样做。因此,实际上,用户只需点击OK即可返回到他们在做什么,并忽略对话框中的信息。

请注意,在某些情况下您仍需要它们。

6

在消费者风格的应用程序中,它们或多或少是无用的;用户不会阅读它们,学会解雇他们,而当他们阅读他们时,通常最终会感到困惑。我认为是/否/取消对话框是彻头彻尾的懒惰UI设计。 “按钮说明他们做了什么”对话框稍微好一些,因为用户不必多读。这就是说:在数据关键型Intranet /“企业”应用程序中,它们或多或少地对确认破坏性行为或对健全性进行检查来检查可能允许但不被推荐的非标准工作流程。

所以,我不认为他们在概念上是“邪恶的”,但更多的时候是不良UI设计的结果。

+0

是的。他们可以容忍的确认您可能错误地做出的危险选择,或者要求获得这种选择的授权。他们应该只在你做出可疑的事情时才会弹出。 – 2008-12-12 03:00:47

5

它们是邪恶的,因为它们违反了用户应该能够指导软件操作的基本原则。模态对话框(一般对话框的恶意形式)将用户限制为只有一个动作。

有些答案似乎错误地认为它是任何弹出窗口要求例如用户确认。这可以在不捆绑整个应用程序或计算机的情况下完成;这是人们反对的这种行为。

在某些环境中,模态对话框仅限于单个应用程序(或更少)的用户。真正糟糕的模式对话框会阻止用户在整个操作系统中执行其他任何操作(例如Windows)。

2

我个人认为这完全取决于它是如何完成的。

尝试复制10个文件,其中每个文件存在于目标目录中,使用Windows资源管理器执行。

对于每个文件是一个单一的模态对话框真的是在这样的操作中的正确答案。我知道你有“对所有人都是的”,但是整个循环系统的构建方式应该不同。它应该已经将所有存在的文件收集到一个大列表中,并且询问“你想要对这些文件做什么”,然后让我决定在列表中的每个文件下单击确定之前要执行的操作并恢复操作。

很多次对话框只是中断正常的工作流程。

是的,人们不读对话框。所以如果你必须使用对话框,那么一个黄金提示就是对它进行改写。如果你想要而不是删除此行数据库?“通过这种方式,如果他们只是选择了“是”,这是用户想要与之相关的典型响应,那么他们最终什么都不会做。

3

我不记得我第一次看到这个地方,但是更好的方式来模拟对话框通常允许容易找到并使用“撤消”功能。 Windows资源管理器实际上会在删除文件时同时执它要求确认(模态对话框),然后,在删除文件后,编辑菜单中有一个“撤消删除”选项。只是一种简单的方式来访问回收站,当然,在这种情况下,微软真的可以放弃对话。

问题是,你经常可以在没有对话的情况下做一些思考,也许有一些额外的代码,但对于一个懒惰的或者更慷慨的时间限制来说,这太容易了。开发商。

这就是说,有时候你真的想一个对话框。考虑一个典型的打印对话框中的所有选项。哪台打印机?所有页面,或只是几个?多少份?我不知道你会怎么做,没有对话框...

21

最好的用户界面是模式。最糟糕的是。

模态的用户界面 - 无论它是从对话框,工具栏按钮或文字提示内置 - 是唯一可取的,只要每个模式的用户转换到它的期望相匹配。当程序意外地转变为模式时......或者模式要求用户拥有他不具备的信息时......那么这会导致用户吃苦,或者迫使他恢复到之前的模式或者猜测适当的行动和潜在的不良结果。

非模态UI是一套完整的工具。有些与手边的工作有关,有些则不是。用户必须具备足够的技能来选择正确的工具,并以正确的方式应用它们。因此,非模态用户界面永远不会像优秀模态用户界面那样优化(当前任务的正确工具已经存在),但它永远不会像坏模态用户界面那样次优(对于目前的任务落入你粗心的手指)。

设计一个良好的模态UI对于非平凡的应用程序来说可能是一个非常困难的任务,特别是对于旨在被各种用户用于更广泛的目的的通用程序。菜单系统和对话框试图缩小差距,允许在较大的非模态应用程序中使用特定于任务的小模态部分。然而,两者都没有什么特别好的结果,不正确的使用和过度使用给他们留下了不好的名声,通常被认为是懒惰程序员的第一个避难所。特别是对话框通常更多地用作强迫用户进入程序员(或设计者)关于如何使用应用程序的想法的手段,或者在用户处推出困难的设计决策和棘手的错误处理,而不是用于他们的同名沟通的目标。由于程序员习惯于编写超线性逻辑,在需要时提示用户输入,所以网络应用程序的兴起已经带来了许多论坛,新闻组以及诸如此类网站的这种趋势。通过程序而不是当用户可用时...被强制进入用户可以非线性导航的系统,并且可以认为任何限制这种自由的尝试都是一种被颠覆而不是必要的邪恶的古怪烦恼。这些可怜的编码员的哀嚎萦绕着'网络',因为他们试图迫使这种粗糙的模态行为进入一个非模态系统,试图将他们围绕在他们身上。对于我们这些在他们残酷的“对话”中长期遭受苦难的人来说,这确实是一个可爱的曲调。

3

Noboy读取它们,并且它们中断程序流程。通常当用作错误通知时,它们是程序故障的前兆。当用户意识到发生了什么时,消息就消失了,他们只能尽可能回想或发明消息。

17

在阅读我的答案之前,您必须仔细阅读以下消息。所有进程,子进程,任务和线程将无限期暂停,等待您的答案。而且,一旦你完全理解了信息,并且可能同意一些合法的东西,以及所有这些的含意,那么只有这样你才能继续。