光标繁忙 - 为什么?
谁能给我一个他们认为繁忙游标合理的场景? 我觉得从用户的角度来看它们总是一个坏主意。 澄清:繁忙的光标是指当用户无法再与应用程序交互时,他们只能移动沙漏鼠标指针并吹口哨。
Can anyone give me a scenario where they think busy cursors are justified? I feel like they're always a bad idea from a user's perspective. Clarification: by busy cursors, I mean when the user can no longer interact with the application, they can only move their hourglass mouse pointer around and whistle a tune.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
总之,我认为只有当等待间隔很短(2秒或更短)时才应该阻止用户在应用程序中执行操作,并且执行多线程的认知开销可能会导致应用程序不太稳定。 有关更多详细信息,请参见下文。
对于持续少于 0.1 秒的操作,通常不需要异步,甚至不需要显示沙漏。
对于持续0.1 到 2 秒的操作,通常不需要异步。 只需将光标切换到沙漏,然后内嵌工作即可。 视觉提示足以让最终用户满意。
如果最终用户发起一个只需要几秒钟的操作,他就处于“专注”思维模式,在这种模式下,他会下意识地等待操作结果,并且他还没有将有意识的大脑切换出去那个特定的焦点。 因此,在如此短的时间内阻塞 UI(用视觉指示器表明这种情况已经发生)是完全可以接受的。
对于持续超过 2 秒的操作,通常应该采用异步方式。 但即便如此,您也应该提供某种进度指示器。 人们发现在没有刺激的情况下很难集中注意力,而 2 秒的时间足够长,最终用户自然会从有意识的“专注”活动转变为有意识的“等待”活动。
当他们处于等待模式时,进度指示器为他们提供了一些事情可以做,并且还提供了确定他们何时切换回“专注”上下文的方法。 视觉线索为大脑提供了一些东西来构建这些上下文切换,而不需要太多的有意识的思考。
事情变得混乱的是,您的操作通常在 X 时间内完成,但偶尔需要 Y,其中 Y 远大于 X。远程操作(例如通过网络进行访问)可能会发生这种情况。 这时您可能需要结合使用上述操作。 例如,考虑在前 2 秒显示一个煮蛋计时器,然后才引入进度指示器。 这避免了将最终用户从“聚焦”上下文直接转到“等待”上下文而无需中间步骤。
In summary, I think that the user should be blocked from doing stuff in your app only when the wait interval is very short (2 seconds or less) and the cognitive overhead of doing multi-threading is likely to result in a less stable app. For more detail, see below.
For an operation lasting less than 0.1 second, you don't usually need to go asynchronous or even show an hourglass.
For an operation lasting between 0.1 and 2 seconds, you usually don't need to go asynchronous. Just switch the cursor to the hourglass, then do the work inline. The visual cue is enough to keep the end-user happy.
If the end-user initiates an operation that is going to take just a couple of seconds, he's in a "focused" mode of thinking in which he's subconsciously waiting for the results of his action, and he hasn’t switched his conscious brain out of that particular focus. So blocking the UI - with a visual indicator that this has happened - is perfectly acceptable for such a short period of time.
For an operation lasting more than 2 seconds, you should usually go asynchronous. But even then, you should provide some sort of progress indicator. People find it difficult to concentrate in the absence of stimulation, and 2 seconds is long enough that the end-user is naturally going to move from conscious ‘focused’ activity to conscious ‘waiting’ activity.
The progress indicator gives them something to occupy them while they are in that waiting mode, and also gives the means of determining when they are going to switch back into their ‘focused’ context. The visual cues give the brain something around which to structure those context switches, without demanding too much conscious thought.
Where it gets messy is where you have an operation that usually completes in X time, but occasionally takes Y, where Y is much greater than X. This can happen for remote actions such as reaching across a network. That's when you might need a combination of the above actions. For example, consider displaying an egg-timer for the first 2 seconds and only then bringing in your progress indicator. This avoids wrenching the end-user from the 'focused' context directly to the 'waiting' context without an intermediate step.
重要的并不是繁忙的光标,而是绝对重要的是,始终向用户提供反馈,表明响应他们的输入正在发生某些事情。 重要的是要认识到,如果没有忙碌的光标、进度条、颤动器、闪烁的按钮、旋转的指挥棒、跳舞的小丑……一切都没有关系——如果你没有它们,而计算机只是坐在那里什么都不做,对于用户来说,计算机看起来已经坏了。
对每个用户操作的即时反馈非常重要。
It's not specifically the busy cursor that is important, but it IS important, absolutely, always to give feedback to the user that something is happening in response to their input. It is important to realize that without a busy cursor, progress bar, throbber, flashing button, swirling baton, dancing clown.. it doesn't matter ANYTHING- if you don't have it, and the computer just sits there doing nothing, the computer looks broken to the user.
immediate feedback for every user action is incredibly important.
我认为你很可能是对的:在一个像样的异步应用程序中,你永远不需要显示繁忙的光标。 即使最后一个重要操作即将完成,用户也始终可以执行某些操作。
也就是说,有时 Java 应用程序(例如 Netbeans 或 Eclipse,甚至 Visual Studio)会挂起,光标不繁忙,也没有希望。 但在这种情况下,繁忙的光标可能也没有多大帮助......但我认为你是对的:繁忙的光标来自应用程序的非多线程时代。 例如,在 Flex 应用程序中,一切都是自动事件驱动的回调,因此设置繁忙的光标毫无意义(当然,尽管可能)。
I think you may well be right: in a decent asynchronous app, you never need to show a busy cursor. The user can always do something even if the big last operation is completing.
That said, sometimes Java apps like Netbeans or Eclipse, or even Visual Studio, hang with no busy cursor and no hope. But in that case, a busy cursor probably wouldn't help much either...but I think you're right: busy cursors are from a non-multithreading era for apps. In Flex apps, for instance, EVERYTHING is automatically event-driven callbacks, so setting a busy cursor would just be meaningless (though possible, of course).
当用户在操作完成之前无法执行任何操作(包括退出应用程序)时,您会显示忙碌光标。
我发现有趣的是,您在网络浏览器中看不到忙碌的光标 - 也许这就是人们如此喜欢它们的原因。
不,等等,我有一个更好的答案。 当计算机正在思考时,您会显示忙碌的光标。
You show a busy cursor when the user can not do anything until the operation is completed - including exiting the application.
I find it interesting that you don't see busy cursors in Web Browsers - perhaps that why people like them so much.
No, wait, I have a better answer. You show a busy cursor when the computer is thinking.
当用户点击网络浏览器上的“刷新”按钮时,必须立即出现繁忙的光标,告诉用户正在加载页面。
我认为是Don't Make Me Think说人类可容忍的加载时间是零秒。
Google 表示:
When one hits the Refresh button on a web browser, busy cursor must appear immediately to tell the user to let them know that a page is being loaded.
I think it was Don't Make Me Think that said that the tolerable loading time for human is zero second.
Google says:
它有两个目的:
忙碌的光标比什么都没有更好地表明操作。 对于更持久的操作,应该使用更好的东西。 例如,当检索页面时,浏览器仍然可以运行,甚至有一个按钮可以停止操作。 由于用户界面功能齐全,因此无需使用忙碌光标。 然而,即使在过渡阶段的这种情况下,例如开始操作或停止操作时,也可以使用繁忙光标。
There are two purposes for it:
Busy cursor is better signal about the operation than nothing. For longer lasting operations something better should be used. For example browsers is still operational when a page is being retrieved and there is even a button to stop the operation. As the user interface is fully functional, there is no need to use busy cursor. However busy cursor can be used even in this kind of situations in the transition phases like when starting the operation or when stopping it.
我尝试在任何可能需要 0.5 到 3 秒的操作上使用它们,对于较长的操作,我认为应该使用包含足够信息的进度指示器。
I try to use them on any action that may take from 0.5 to 3 seconds, for longer actions I think progress indicators with enough information should be used.
我注意到至少在 Fedora 8 中,当应用程序设置“忙”光标时,实际上会显示“忙交互”光标。 我想这是因为系统仍然响应鼠标输入(例如拖动窗口等)。 顺便说一句,在 Linux 上显式选择“繁忙交互”光标是很棘手的:
http://www.pixelbeat.org/programming/x_cursors/
I noticed with Fedora 8 at least that when an app sets the "busy" cursor, the "busy interactive" one is actually displayed. I guess this is because the system is still responsive to mouse input (like dragging the window etc.). As an aside, selecting the "busy interactive" cursor explicitly on linux is tricky:
http://www.pixelbeat.org/programming/x_cursors/
我相信繁忙的光标所做的唯一一件事是它通知用户......
The only thing I believe the busy cursor does is it informs the user that ...
虽然绝对有必要提醒用户您的应用程序正在执行某些操作,但繁忙的光标仅在处理的前几秒钟有用。 对于超过大约 15-20 秒的延迟,必须呈现其他内容,例如进度条、状态消息、消息框等。 人们认为您的软件在一分钟左右后就锁定了,并会尝试终止它。 有时,整体视觉提示与忙碌的光标一样重要。
例如,具有选项卡的应用程序在选项卡中的操作完成之前不会以适当的突出显示进行响应,可以通过暂时更新选项卡直到所有操作完成来修复。 有时,只需一点优化或重构就能消除像这样糟糕的用户界面响应能力。
While it is absolutely necessary to alert the user that your application is doing something, a busy cursor is only useful for the first few seconds of processing. For a delay of more than about 15-20 seconds, something else must be presented such as a progress bar, status message, message box, whatever. People assume your software has locked up after a minute or so and will try to terminate it. Sometimes, overall visual cues are just as important as a busy cursor.
For example, applications with tabs that do not respond with appropriate highlighting until the operation in the tab completes can be fixed up by updating the tab temporarily until all operations are complete. Sometimes, just a little optimization or refactoring will clean up horrible user interface responsiveness such as this.
我只会使用它们来快速完成事情,比如不到半秒。 如果任何事情花费的时间超过该时间,则应弹出进度对话框,或者进度条应出现在状态栏或界面中的其他位置。
如果操作花费太长时间才能完成,用户应该始终能够取消该操作。
作为对评论的响应,忙碌光标将仅在半秒左右可见,因为一旦进度对话框打开,它应该更改为那些“半忙”光标之一,或者只是正常的箭头光标。
除非在极端情况下,否则您应该避免出现繁忙的光标,如果您认为需要,请再考虑一下并重新设计。
I would use them only for quick completing things, like say under half a second. If anything takes longer than that then a progress dialog should popup, or a progress bar should appear in the status bar or somewhere else in the interface.
The user should always be able to cancel the action if it is taking too long to complete.
In response to the comment, the busy cursor would only be visible for the half second or so, as once the progress dialog is up it should change to being one of those "half busy" cursors, or just the normal arrow cursor.
You should avoid having a busy cursor up except in extreme circumstances, and if you think you need one, then think again and redesign.
例如,指示您已单击按钮,即使事件处理尚未完成。 如果没有任何指示,用户可能会尝试再次单击该按钮,从而导致各种不良情况。
For example, to indicate that you've clicked on a button, even though it's not done processing the event. If there were not some indication, the user might try to click the button again, causing all manner of badness.