58

これは私にとって長年の質問であり、私は実際には解決したことがないので、あなたの意見をお願いします。特権やオブジェクトの状態が不十分なためにユーザーが実行できないことがわかっているアクションがある場合、それらのアクションのUI要素をユーザーから非表示にするか、表示するが無効にするか、表示して試行するとエラーが発生する必要がありますか?あなたの答えの根拠は何でしょうか?障害がある場合、その理由を伝えますか?もしそうなら、どのように伝えますか?

これはWebインターフェースであるため、着信投稿をチェックしてアクセス許可を取得し、とにかくそこでエラーを処理する必要があることをすでに知っています。私は主にUIの処理方法について話しています。

これは、メニュー項目の無効化または非表示に関するルールに似ていますが、メニューだけでなく、すべてのタイプのUI要素に関心があります。

例:

  1. ユーザーが新しいイベントを作成できる新しいページがあります。イベントは、マスターイベントまたはサブイベントにすることができます。マスターイベントの作成には「EditMasterEvent」権限が必要ですが、サブイベントの作成には「EditEvent」権限のみが必要です。親として既存のイベント(マスターイベント)または親なし(これはマスターイベント)を選択できるドロップダウンがあります。「マスターイベントの作成」の選択肢がドロップダウンに表示されるか、ユーザーが「EditEvent」権限のみを持っている場合は省略されますか。

  2. イベントを削除するには、アプリケーション管理者であるか、イベントタイプに適切な編集権限を持っている必要があります。後者の場合、イベントも5年以上経過している必要があります。イベントを削除すると、システム内の関連データがカスケードで大幅に削除されます。法的な理由により、このデータはイベント後少なくとも5年間保持する必要があります。この操作は通常のユーザーにはまれであるため、通常、アクションは使用できません。常に表示する必要がありますか、それとも実際に可能な場合にのみ表示する必要がありますか?

4

13 に答える 13

47

非表示 - これは、現在のユーザーが使用できないアクションに最適な方法です。これを変更するために実行できるアクションがない場合、何かが無効になっている理由を理解するためにユーザーに精神的な努力を無駄にさせても意味がありません。

無効 - これは、時々利用可能であるが、現時点または現在のコンテキストでは利用できないアクションに最適な方法です。無効なオプションは 2 つのことを伝えます。1 つ目は、アクションが現在利用できないこと、2 つ目は、アクションを利用できるようにするためにユーザーができること (設定または権限の変更、アイテムの選択、前提条件データの入力など) があることです。 )。ツールチップでアクションを有効にするために何をする必要があるかを示すことができれば、なおさらです。ユーザーがデータを入力したり、コンテキストを変更したりするときにアクションを有効または無効にすると、プログラムに必要なものに関する優れたフィードバックが得られます。

エラーで失敗 - これは最悪の選択です。動作する可能性のある操作についてのみ、エラー レポートを使用する必要があります。試行しない限り、操作が失敗することはわかりません。

于 2008-12-16T20:01:21.370 に答える
19

ほとんどすべての UI に関する質問と同様に、答えは「場合による」です。

とりわけ、見つけやすさとユーザーの満足度を比較検討する必要があります。たとえば、無効なアクションを許可すると、何かが無効である理由を説明する機会が得られます。これは、「これが無効になっている理由」に対する答えが明らかでない場合に特に役立ちます。ほとんどのユーザーが初心者であるアプリケーションの場合、これは重要です。

一方、コントロールを見てクリックしても、「申し訳ありませんが、今はできません」というメッセージが表示されると、非常にイライラすることがあります。私が数年前に継承したアプリは、そのようなものであふれていて、UI を使用してフラストレーションを感じていました。

機能を完全に隠すことは、おそらくめったに良い考えではありません。ある機能が「1 分前にはあった」ことを知っていると想像してみてください。それがメニュー項目であれ、ツールバー ボタンであれ、それ以外のものであれ、それを非表示にすることは、エンド ユーザーにとって不満の種になる可能性があります。

次に目にする人に「ねえ、これを無効にするか、有益なダイアログを表示するのは理にかなっていますか」と尋ねるだけであれば、少しのユーザビリティテストを行ってみてください. 多くの場合、別の意見が 1 つあるだけで、問題を別の方向から見ることができます。

結論: ユーザーに最も役立つことを行います。あなたが言及したすべてのシナリオは、特定の状況下で有効です。すべての UI に関する質問と同様に、自分自身 (または、より良いのはユーザー) に、自分のニーズに最も適したものは何かを尋ねてください。

于 2008-12-16T17:21:26.573 に答える
13

要素を非表示にする代わりに無効にします。そうすることで、ユーザーはオプションが通常利用できることを知っており、要素が現在利用できない理由を説明するためのツールチップを提供します。

于 2008-12-16T16:59:53.420 に答える
5

場合によります。アクションが可能であることをユーザーに認識してもらいたいですか? その場合は、ボタンを表示しますが、無効にします。たとえば、あるユーザーには削除権限がなく、他のユーザーには削除権限がある場合、そのユーザーはエントリを削除できることを知っておく必要があるため、アクションが必要な場合は誰かに削除を依頼できます。

一方、ユーザーがアクションについて知ることさえ想定されていない場合 (たとえば、監査ログへの読み取りアクセス権を持たないユーザーは、おそらくこれらのログが存在することを知らないはずです) は、ボタンを表示できないようにする必要があります。 、完全に非表示にします。

于 2008-12-16T17:12:43.613 に答える
3

素晴らしい質問です。

いくつかの考慮事項:

ページに要素を配置して無効にしても、ユーザーがシステムを修正して JavaScriptlet を使用して要素を有効にする可能性はほとんどありません。

それらをまったく表示しないと、全体的な機能が一般ユーザーにとって少し混乱する可能性があります。「ここに編集ボタンがあればいいんじゃない?」

要素を表示して無効にするか、表示して検証する場合は、間違いなくサーバー側の検証を行います。バリデーションを JavaScript に任せないでください。その理由は明らかだと思います。

于 2008-12-16T17:04:41.960 に答える
3

私は、2 つの異なるタイプの状況を異なる方法で処理する傾向があります。これは、特権とオブジェクトの状態によって管理されるアクションですか。

その人がアクションを実行するのに十分な権限を持っていない場合、オプションを非表示にします。彼らはアクションを実行できることを知りません。

オブジェクトがそのオプションを使用できる状態にないためにオプションが使用できない場合は、それを無効にして、オプションをユーザーに表示できるようにしますが、アクションを実行することはできません。

あなたの例から:

  1. オプションとして「Create Master Event」はありません。ユーザーには、それを表示するための十分な権限がありません。

  2. 管理者に [削除] ボタンが表示されるようにします。次に、サイトの残りの部分 (多数の表示テキスト、ツールチップ、ヘルプ アイコンなど) をどのように処理するかによって、現時点でボタンが使用できない理由をユーザーに通知するという規則に従います。そしておそらく、上のボタンの近くにタイマーを置いて、投稿がどれくらい古いか、または投稿が削除されるまでの時間を示します.

于 2008-12-16T17:42:39.183 に答える
1

アイテムに応じて、非表示にするか無効にします。ユーザーが大きな機能にアクセスできても、その中の小さな部分にはアクセスできない場合は、小さな部分を非表示にします。ただし、ユーザーがいくつかの大きな機能にアクセスできるが、他の機能にはアクセスできない場合は、それらを表示したままにして無効にします。これは、必要に応じて機能を購入できることを思い出させるためのマーケティング戦略です。

于 2008-12-16T17:04:26.327 に答える
1

また、メニュー項目を無効にして、そのテキストを「Log in to do blah...」に変更するプログラムもいくつか見ました。

「なぜこれが機能しないのですか?」ということを残さないので、私はこれが好きです。感じ、それを機能させるために何をすべきかをすぐに教えてくれます。すべての場合に適用できるわけではありませんが、実装できる場合、これは優れたアプローチです。

于 2008-12-16T17:14:00.707 に答える
1

一般的なルールは、ユーザーが UI で何かを実行して権限を取得できる場合、使用を無効にすることです。無効とは、「このコマンドを実行することはできますが、現在の状況では実行できない」ことを意味します。「現状」には現在の選択が含まれるため、ユーザーが古いオブジェクトに対する EditEvent 権限を持っているが、新しいオブジェクトに対する権限を持っていない場合は、有効化/無効化を使用してください。どのオブジェクトが削除可能であるかを明確に示す必要があります。これにより、一部のオブジェクトで関連付けられたコマンドが無効になっている理由をユーザーが理解できるようになります (たとえば、ユーザーが通常、記録を 5 年間保持する必要があることを一般的に知っている場合は、単純な Age フィールドで十分であり、強化される可能性があります)。 5 年以上前のレコードではグラフィックに違いがあります)。

ユーザーがドメインについて平均的な知識を持っていると仮定して、無効にする理由を明確にする方法がない場合は、無効にする代わりにメッセージ ボックスを使用します。ところで、無効なコントロールのツールチップは素晴らしいアイデアですが、それだけでは不十分な場合があります。

ユーザーが組織内での現在の位置に基づいて UI で何をしても特権を持たない場合 (たとえば、ユーザーがアプリケーション管理者ではない場合) は、非表示を使用します。この場合、無効化やメッセージ ボックスを使用するのは煩雑でイライラします。ユーザーに関する限り、特権を持たないアクションは彼らの仕事ではありません (そうでなければ特権を持っているはずです)。そのため、関連付けられたコントロールは UI に存在しないはずです。文書や組織の手順書は、そのような行動がどのように達成されるかをユーザーに伝えることができます (例えば、「上司があなたのために新しいイベントを作成します」)。

http://www.zuschlogin.com/?p=40で詳細を確認できます。

于 2008-12-23T15:30:42.453 に答える
1

理由を含むホバーで無効にします。

これにより、ユーザーが一体何が起こっているのか疑問に思うのを防ぐと同時に、適切な条件下で特定のアクションが可能であることをユーザーに知らせます。

于 2008-12-23T15:36:05.127 に答える
0

私の個人的な感覚では、要素は常に存在する必要があります。ユーザーがそれらを実行するのに十分な権限を持っていない場合、クリックするとエラーが発生するはずです。

翻訳者は無数の異なる「許可が拒否されました」というエラー メッセージを作成することをあまり好まないことを私は知っています。

実際には、ローカライズされていないアプリであっても、多くの人が代わりにオプションを非表示にする傾向があります。

于 2008-12-16T17:22:10.847 に答える