2008-12-12 58 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

在閱讀我的答案之前,您必須仔細閱讀以下消息。所有進程,子進程,任務和線程將無限期暫停,等待您的答案。而且,一旦你完全理解了信息,並且可能同意一些合法的東西,以及所有這些的含意,那麼只有這樣你才能繼續。