it-swarm.cn

防止禁止的行为或显示错误/解释消息是否更好?

有多个示例,因此我将选择一个具体的示例来重点说明问题。

假设用户可以具有特定的特征(或权限):
管理员,虚拟,外部,财务等.

使事情复杂化的是,用户也具有不同的许可证-Premium,Regular,Limited等。

您可能会看到前进的方向:
比方说,拥有有限许可的用户不能是管理员或具有财务权限。

可能性:

  • 管理员进入了Zack的个人资料,例如Zack,看到他不能允许他拥有财务许可。
    问题是管理员不清楚原因是什么(许可证信息和权限没有显示在同一位置,即使管理员和管理员都知道,该信息也是如此) “没有针对受限用户的财务许可”)
  • 管理员将看到所有启用的权限(假设通过复选框实现),并且仅在单击时才会显示错误消息,告知操作被拒绝的原因。
    现在的原因很明显,但是管理员必须“浪费”点击才能找到答案。

是否有既可以防止该行为又可以解释原因的方法?带工具提示的禁用控件会起作用吗?还有更好的主意吗?

简单地说一下其他示例-假设您有一个交互式图形,可以移动图形上的大多数点,但有些点必须是固定的。您可以以不同的方式绘制它们以指示它们无法移动(无需解释原因),或者可以让用户尝试拖动它们然后显示错误消息。

27
Dan Barak

根据应用程序的不同,我常常只是不显示用户无权访问的页面部分。听起来您有用户在更改其他用户的权限,因此此方法可能不起作用。每当您显示禁用的输入元素时,我建议显示一条错误消息。当用户无法执行他们希望能够执行的操作时,他们可能会感到沮丧。如果只是禁用它,他们可能不明白为什么,只会将其从程序中删除。同样,您要确保消息尽可能简单明了。长错误消息通常被忽略。

12
LoganGoesPlaces

在完全隐藏用户无法访问的功能的UI的一部分之前,请考虑:

  1. 用户会知道该功能吗?
  2. 他们会花很多时间寻找它吗?
  3. 您是否最好将其与工具提示或其他指示器一起保持在某种“禁用”状态,以便他们可以了解为什么它不可用?

这是一个简单的例子。假设您的应用程序包括打印选项。如果没有可用的打印机,是否应该完全隐藏打印菜单命令?当用户浏览所有菜单并最终联系您的技术支持团队以尝试找到“打印”命令时,这会造成混乱和浪费时间吗?您的技术支持团队甚至会了解该用户没有看到“打印”命令吗?例如,如果打印机已连接但已关闭电源以节省电量,是否会有意外的副作用?

通常,我认为在许多情况下,尤其是有时某个选项可用的情况下,最好通过禁用的选项甚至启用的选项来为用户提供服务,该选项会显示一条错误消息,说明为什么该选项不是当前可用。

35
Joel Spolsky

我看到两种不同的方法。

如果由于security而禁用了这些操作,则我实际上将尝试尽可能地将其删除。轻松使用菜单项或大多数工具栏按钮。

如果由于您使用的是较便宜的软件版本而禁用了这些操作,那么我会保留它们,但将其禁用。这使用户知道“如果您支付更多,您可能会拥有它”,而如果将其删除,他们将不知道他们丢失了什么。我将“由于许可证而无法执行此操作”弹出窗口视为不良UI,因为用户无法告诉他们是否可以执行操作而不实际尝试执行操作。

8
shemnon

另一种方法是根本不显示操作。

堆栈交换就是一个很好的例子。如果我没有他人帖子的“编辑”权限,则看不到“编辑”链接完全。这意味着我不尝试单击它,不知道为什么它不起作用。

这可能无法在所有情况下都有效,但是在您的示例中,“ admin”和“ financial”选项/链接仅对受限用户不显示-即使在那些用户的管理屏幕中也是如此。如果将用户更改为“普通”或“高级”用户,则将显示这些选项/链接。

然后,您可以考虑将用户类型显示在半醒目的位置,以便提醒管理员为什么某些选项/链接不可见!

7
ChrisF

正如其他答案所指出的那样,如果用户没有权限在系统内执行操作(例如,没有编辑/管理权限),则根本不应该显示该操作。

在因应用程序状态而禁用操作的情况下(无法编辑只读文件,如果未选择任何文本,则无法复制/粘贴,用户具有缺少某些功能的试用版软件,等等)认为该操作应为显示,并带有视觉指示,表明当前无法执行该操作。请注意,我不会说“已禁用”,因为如果用户tries该操作,他们应该能够找出为什么它不可行的原因。这样,用户可以看到该操作已被禁用,但是他们也可以收到一条消息解释原因。

对于用户拥有缺少功能的应用程序的试用版/许可不足版本,我会非常小心。例如,如果您有一个ISO读/写应用程序,除非您付款,否则它不会翻录CD,那么您可以显示“ rip CD”选项,但不能让用户执行。但是,如果您的应用程序在其高端版本(例如,Visual Studio)中具有完整的套件功能,则显示所有这些内容但不允许它们会使用户感到沮丧。我不想打开我的IDE)并看到数据库,网络,集成的UML,测试,配置文件等套件,当我知道自己被授权从事的工作就是编写和构建项目时。

6
Carson Myers

我的经验法则是:如果用户由于权限而无法执行某项操作,则该操作是不可见的。如果由于临时上下文而无法执行某项操作(此“保存”按钮在用户输入要保存的内容之前没有任何意义),则将其禁用。

“权限”涵盖“管理员用户与普通用户”以及“高级许可证与cheapo许可证”。不可用的UI元素很杂乱-并不是宣传其他功能的方法。

许多答案似乎都是正确的,只是想将其全部归结为尼尔森的一种启发式方法,恰恰恰恰指向了这一点。它指出:

错误预防一种比精心设计的错误消息要好得多的设计,它可以从一开始就防止出现问题。消除容易出错的条件,或者检查条件,并在用户执行操作之前向其提供确认选项。

资料来源: http://www.useit.com/papers/heuristic/heuristic_list.html

4
Nacho

我真的很喜欢 shemnon's 答案。我将扩大他的第二种情况,并采用伊恩引用的尼尔森诫命;如果用户的许可证价格便宜,我将禁用该选项,并用一个图标替换选择对象,该图标进一步表明该选项的禁用状态。

就像是

  • O选项1
  • O选项2
  • alt text 选项3
  • O选项4

由于该假想产品仍在开发中,因此我还将在同一页面上至少包含用户许可级别的声明。这样,管理员可以在查看管理员直接影响该许可证的系统变量的同时看到用户的许可证级别。

软件的优点是您只需调用信息即可。

编辑:此外,我可能会采用以角色为中心的权限方案,可以将权限分配给角色,而不是单个用户。这通常减轻了需要微管理各个用户权限的大量开销。

  1. 管理员打开角色编辑屏幕。
  2. 管理员可能会选择一个单选按钮,以获取将角色应用到的最低许可证。
  3. 所选角色不可用的权限被禁用并“ x”化。
  4. 管理员从其余活动选项中选择权限。
  5. 稍后,在用户管理屏幕或用户配置文件中,管理员会根据许可查看用户可以拥有的角色列表,然后管理员选择一个或多个角色。
1
Matt

通常,我的经验法则是这样的(并且我有充分的理由要打破它):如果禁用组件背后的原因是从上下文中得出的,或者由于其他原因使用户理解起来很容易,那么阻塞是首选解决方案。否则,用户可能很难理解为什么会这样,更糟糕的是,下一次遇到它时,他可能会不记得它的原因(如果他发现了)。

1
Assimiz

要回答您的特定问题,您想要显示足够的信息,以便用户在单击之前可以了解限制。在您的示例中,您应该将每个具有其许可证的用户列出为一个只读字段,该字段在视觉上(例如,按接近度)与控件进行连接以设置其权限。或者,您可以将许可证字段与权限标签动态组合(例如,“权限(具有受限许可证):”)。

不适用的权限可能应该被禁用,未启用且未隐藏。如果很麻烦,请添加内嵌文本,悬停文本/工具提示,或用于解释为什么许可证不允许的权限的链接(如果内嵌文本列出了权限,则内嵌文本可能会替换禁用的控件;例如“ Admin ,“财务限制不用于受限用户”)。

如果用户可以在UI中执行某些操作以启用命令,则一般规则是使用禁用。禁用表示“您可以执行此命令,但现在不能执行此操作。” “事物的方式”包括当前选择。无论何时使用禁用,都应该有明确的指示,以便用户理解为什么某些对象禁用了关联的命令。

如果存在no way,请使用消息框而不是禁用消息框,以便事先假设用户具有该域的一般知识,从而使禁用的原因明确。禁用控件的工具提示是个不错的主意,但仅在所有情况下可能并不足够。

鉴于用户在组织中的当前位置,无论用户在UI中执行什么操作,如果用户永远无法访问命令,请使用隐藏。例如,根本不会出现未经用户授予其权限的操作。在这种情况下使用禁用或消息框是很混乱和令人沮丧的。就用户而言,他们无权执行的操作不是他们的工作(否则他们将具有访问权限),因此相关的控件应该完全不在用户界面中。文档或组织过程手册可能会告诉用户如何完成此类操作(例如,“您的主管为您创建新的客户帐户”或“您需要财务许可才能编辑帐户;请向管理员咨询该过程以获取批准以升级您的许可。 ”)。

我在 控制您的控件 上有详细介绍。

1
Michael Zuschlag

以上几点很不错,我不想重复,但是...

在这种情况下,我将看到所有可用选项。您的规则中不适用的选项应被禁用(显示为灰色)。任何界面的用户都知道,如果某些内容变灰,这通常是常识,这通常意味着它不适用于正在进行的某种规则集。

工具提示与禁用按钮完美吻合。在某些特殊的,更高级的情况下,例如上述带有许可证的情况,如果没有适当许可证的用户正在查看需要更高许可证的区域,则将按钮的样式完全更改为“立即升级!”。而不是将其变灰会更好地为该产品做广告,并阐明要点。

如果管理员用户正在查看它,则他们显然会看到财务选项显示为灰色,并带有工具提示以说明原因。

我不完全了解您所遇到问题的背景,甚至可能没有涉及的产品。但是根据我的理解,这就是我对此的反应。

1
user708

Windows UXGuide有很多资源,可以帮助您决定是显示错误还是防止无效输入。具体来说, a section 使以下有关ui的声明成为可能。

当用户不太可能执行操作或更改消息行为时,不要给出错误消息。如果用户没有采取任何措施,或者问题不严重,请排除错误消息。

这个讨论也让我想起了卡尔·希弗莱特(Karl Shifflett)在他的 博客文章 题为“ Fort Knox Business Objects(yes/no)”的内容时,他权衡了是否允许业务对象进入的利弊。是否为无效状态,以及此决定如何影响用户交互。

就个人而言,我倾向于防止用户在大多数情况下进行无效的输入或禁用执行诸如按钮之类的操作的控件,但是对于某些涉及复杂文本输入的控件,我倾向于显示内联警告,该警告不如消息框那么引人注目,但仍然得到跨点。

0
jpierson

两者都做:后端和UI

这确实不应该是一种情况。其他答案列出列出显示不可用选项的充分理由,以及不显示它们的充分理由。但是,无论哪种方式,您都需要在后端正确处理它。即使您认为他们只能提供正确的输入,您仍然需要正确检查用户的输入和权限。

这对任何基于Web的应用程序都适用,用户可以人为地启用禁用的控件/选项/输入。不要让Firebug胜过您的应用程序控制我可以做什么的能力。并且在他们尝试使用不应使用的选项的情况下,请确保您记录了事件。

0
Jeffrey Blake