Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQueryScrollTop并关注元素_Javascript_Jquery_Html_Css_Accessibility - Fatal编程技术网

Javascript jQueryScrollTop并关注元素

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

我有以下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: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:-(