11

看起来在大多数浏览器中,an<input type="submit">将 [spacebar] 和 [enter] 都视为单击,但<a>链接仅将 [enter] 视为单击。

我的应用程序使用了许多格式化为模拟按钮的链接,因此习惯于使用 Tab 键切换到按钮并按下 [空格键] 的用户会感到沮丧。

这一点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。

如果您还不能为这两种情况模拟按钮行为(在链接上),那么您将为不同的人提供不同的体验——这是不使用该功能的一个很好的理由。空格键应该在每次使用这些链接/按钮时触发,或者都不触发。

于 2010-03-12T16:21:00.153 回答