11

ほとんどのブラウザで<input type="submit">は、[スペースバー]と[入力]の両方をクリックとして扱いますが、<a>リンクは[入力]をクリックとしてのみ扱います。

私のアプリは、ボタンをシミュレートするためにフォーマットされた多数のリンクを使用しているため、ボタンにタブで移動して[スペースバー]を押すことに慣れているユーザーはイライラします。

jQueryのこのビットは問題を解決します:

$("a.Button").die("keypress").live("keypress", function(e) {
    if (e.which == 32) {
        $(this).trigger("click");
        e.preventDefault();
    }
});

私の質問:これをしない理由はありますか?このような基本的なものでブラウザのデフォルトの動作を上書きするのは少し気が進まないが、リンクタグを悪用してボタンのように見せているので、少なくともこの方法では、ユーザーの期待に違反することはありません。さらに遠く。

4

2 に答える 2

7

維持すべき最も重要な基準は、ブラウザーの動作ではなく、ユーザーが期待する応答だと思います。

リンクをボタンに変えることでリンクの表示をオーバーライドした場合、ユーザーはそれらの「ボタン」を実際のボタンの場合とまったく同じように扱える必要があります。そうしないと、何年もこのボタンに費やしてきたユーザーを混乱させ、苛立たせることになります習った」行動。

于 2010-03-12T16:20:38.657 に答える
0

標準的なユーザビリティの問題があります。

ここでは「似ている」ことが重要だと思います。誰かがスクリーン リーダーを使用している場合、そのユーザーはリンクを「見て」、適切に行動します。

誰かが javascript をオフにしている場合、jquery 関数は (明らかに) 実行されず、リンクの動作も取得します。

明らかに、ボタンのようなリンクを使用して魂の検索 (!) を既に行っているため、スクリーン リーダーと非 JavaScript の 2 つのケースに対処する必要があります。

これら 2 つのケースでボタンの動作 (リンク上) をシミュレートすることもできない場合は、別の人に別のエクスペリエンスを提供することになります。これは、この機能を使用しない正当な理由です。スペースバーは、これらのリンク/ボタンを使用するたびに起動するか、まったく起動しないかのいずれかです。

于 2010-03-12T16:21:00.153 に答える