Javascript jQueryScrollTop并关注元素
我有以下scrollTop功能:Javascript jQueryScrollTop并关注元素,javascript,jquery,html,css,accessibility,Javascript,Jquery,Html,Css,Accessibility,我有以下scrollTop功能: <a onclick="jQuery('html,body').animate({scrollTop:0},'slow');return false;" class="well well-sm" href="#"> <i class="uxf-icon uxf-up-open-large"></i><span class="sr-only">${message:backToT
<a onclick="jQuery('html,body').animate({scrollTop:0},'slow');return false;" class="well well-sm" href="#">
<i class="uxf-icon uxf-up-open-large"></i><span class="sr-only">${message:backToTop}</span></a>
但是,当您使用键盘导航时,焦点不会移到顶部。它保留在页脚中。是否有办法将重点放在以下部门:
<div id="top" tabindex="-1"></div>
动画滚动到元素顶部,然后设置焦点:
<script>
function scroll() {
$('html, body').animate({
scrollTop: $('#top').offset().top
}, 'slow', function() {
$('#top').focus();
});
}
</script>
<a onclick="scroll(); return false;" class="well well-sm" href="#">...</a>
函数滚动(){
$('html,body')。设置动画({
scrollTop:$('#top').offset().top
},'slow',function(){
$(“#顶部”).focus();
});
}
问题是您已经为其分配了一个单击,而enter是一个按键,您必须同时设置这两个键,这里有一种使用jQuery委派的方法:
function animateToTop() {
$('html,body').animate({
scrollTop: $('#top').offset().top
}, 'slow');
}
$('#aSendToTop').on('click keypress',
function (e) {
// mouse 1 has keyCode 1, while enter is keycode 13
if( [1, 13].indexOf(e.which) > -1 ) animateToTop();
}
);
视觉焦点与键盘焦点不同,您可以使用
focus()
函数定义键盘焦点
<a onclick="jQuery("#top").focus();return false;" class="well well-sm" href="#">...</a>
这可以与动画功能结合使用。“…键盘导航…”您的意思是tab+在元素上输入?@Kriggs,是的,我的意思是tab然后输入。这似乎不会改变焦点。因为是在onclick中,我需要返回false吗?我也在滚动的末尾添加了焦点。是的,您应该使用
返回false
there.error,onclick
与a[href]
配合使用时效果良好。(这是一个例外)@Adam没有按键的解决方案是什么?请参阅WCAG SCR35:虽然“onclick”听起来像是绑定到鼠标,但onclick事件实际上映射到链接或按钮的默认操作。谢谢。这正是我想要的。事实上,我之前尝试过这个,但没有返回false:-(