web-dev-qa-db-ja.com

ダイアログボックスでの「偶然の確認」問題の解決

シナリオはあまりにも一般的です。入力中にアプリケーションがダイアログボックスを表示し、何が起こっているのか気付く前にスペースキーを押します。ダイアログが消え、あなたはそれが言ったことの手がかりがありません。

これは、ダイアログボックスの設計に関する基本的な問題です。どうすれば解決できますか?

1つの可能性:Firefoxはアドオンのインストール時に確認ダイアログを表示しますが、OKボタンを3秒間無効にします。これは偶発的な確認を防ぎます(そして警告を読むことを強制します)が、一般にユーザーに強制的に待機させることは良い考えではないと思います。

20
M. Dudley

Edited:デフォルトでは、フォーカスはボタンにあるべきではありません。そうすれば、スペースバー(またはEnterキー)はそれを却下しません。これは、モーダルの重要度にも依存します。画面をブロックする必要がありますか?インラインで通知できますか?

モーダルダイアログおよび類似の問題に関するすばらしい記事:

  1. http://humanized.com/weblog/2006/09/11/monolog_boxes_and_transparent_messages/
  2. http://www.azarask.in/blog/post/is_visual_feedback_enough_why_modes_kill/

さらに、それが本当に重要な場合は、[OK]をクリックする前に、ユーザーをTHINKにする必要があります。 しばらく前に作成した例

6
Glen Lipka

ユーザーが入力している最中はダイアログボックスを表示しないでください。ユーザーはとにかく忙しいのです。

ダイアログボックスがユーザーの入力内容と関係がある場合は、とにかく、より個別の通知のほうが適している可能性があります正確に理由彼らは忙しく、一連の考えを出そうとしています。

ユーザーが離れて入力しているときにそれを検出し、入力が途切れたときにのみダイアログをポップアップ表示することはそれほど難しくないはずです。

これには例外があります-常にあります!

[とにかく、ポップアップダイアログは最初の原則として避けるべきです。それらは時々必要ではないということではなく、それがより良い方法で実行できるかどうかについて考えてください。]

8
Roger Attrill

ダイアログボックスのデザインにはいくつかの問題があるかもしれませんが。ダイアログボックスが使用されている理由を質問する必要があります。情報を提供するものである場合は、ユーザーの通常のワークフローを明らかに妨げているため、おそらく排除し、メッセージをログに記録して別の場所に保存する必要があります。関連するアクションがある場合は、元に戻す機能を提供する必要があります。

4
Tom Engh

バックグラウンドタスクが、ユーザーが現在行っている作業を中断させてはなりません。ユーザーは入力していることを絶対に中止し、この問題に今すぐ対処する必要がありますか?コンピュータが火を起こそうとしない限り、ほとんどありません。ダイアログを表示することはできますが、ダイアログはフォーカスされるべきではありません。

ダイアログがフォーカスを取得する必要がある場合(コンピューターが発火する可能性があるため)、ダイアログが消えるような偶発的な入力(キーボードやマウス)があってはなりません。ユーザーが明示的にフォーカスを切り替えるまで、nullフィールドに入力を受け取ります。

3
DJClayworth

問題は、非同期入力フォーカスの変更が基本的に壊れた設計であることです。彼らは非常にユーザーに見える競合状態の影響を受けます。醜くて時代遅れですが、「ダイアログボックス」は少なくとも同期プロンプト(ユーザーが開始したアクションへの直接の応答であり、感知できるほどの遅延がない限り)には使用できます。ただし、非同期でユーザーからの応答が必要な場合でも、質問と応答ボタンはアプリケーションUIの専用部分に表示されます(「プラグインがブロックされた」または「Cookieがブロックされた」通知メカニズムをChromeまたはFirefox)、応答を返すために、インターフェース要素または特別なキーの組み合わせ(他の方法では意味がありません)をクリックする必要があります。

3つの言葉で:

フォーカスを盗みません。

煩わしいダイアログが前景にジャンプすることについても多く説明できますが、それらは落ち着いてバックグラウンドでその場所に表示されます。

そして、多くのダイアログはまったく表示されるべきではありません。

[いいえ、私は今Caminoを更新したくありません。昨日まで、昨日の前日までです...]

0

おそらくこれは、アニメーションが実際に役立つ時期です。

これを想像してみてください:

  1. ダイアログボックスは、アニメーションもボタンもない状態ですぐに表示されます。ユーザーは、メッセージをできるだけ早く表示して読むことができる必要があります。
  2. 500ms後、OK /キャンセルボタンがフェードインします。
  3. さらに500ms後、まだ何もクリックしていない場合は、[OK]ボタンが自動的にフォーカスに設定されます。

必要に応じて、これらの時間を調整できます。しかし、私はそのようなものは、遅すぎたり迷惑になったりすることなく、ほとんどの事故を防ぐことができると思います。

0
Steve Wortham