在大多数浏览器中,<input type="submit">
将[空格键]和[输入]视为点击,但<a>
链接仅将[输入]视为点击。
我的应用程序使用了许多格式化模拟按钮的链接,因此习惯于按Tab键切换按钮并按[空格键]的用户将会感到沮丧。
这一点jQuery解决了这个问题:
$("a.Button").die("keypress").live("keypress", function(e) {
if (e.which == 32) {
$(this).trigger("click");
e.preventDefault();
}
});
我的问题:有没有理由不这样做?我有点不愿意在基本的东西上覆盖浏览器的默认行为,但由于我已经滥用链接标签使其看起来像一个按钮,至少这样我不会违反用户的期望任何进一步。
答案 0 :(得分:6)
我认为维护最重要的标准不是浏览器的行为,而是用户的预期响应。
如果您通过将链接显示为按钮来覆盖链接的显示,则用户必须能够完全按照它们是真实按钮的方式处理这些“按钮”,否则您会混淆并激怒花费数年时间的用户这种“习得”的行为。
答案 1 :(得分:0)
有标准的可用性问题。
我认为'看起来'是关键所在。如果有人使用屏幕阅读器,他们将“看到”一个链接并采取适当的行动。
如果某人关闭了javascript,jquery函数(显然)将无法运行,并且它们也会获得链接行为。
显然你已经使用类似按钮的链接进行了灵魂搜索(!),所以这是处理这两种情况的一种情况 - 屏幕阅读器和非javascript。
如果您还无法模拟这两种情况下的按钮行为(在链接上),那么您将为不同的人提供不同的体验 - 这是不使用该功能的一个很好的理由。空格键应该触发这些链接/按钮的每次使用,或者不使用它们。