Javascript 如何在按下键事件后在Fancybox内滚动

Javascript 如何在按下键事件后在Fancybox内滚动,javascript,jquery,scroll,fancybox,fancybox-2,Javascript,Jquery,Scroll,Fancybox,Fancybox 2,我正在ASP.NET MVC4 web应用程序中使用Fancybox 2.1.5来显示中的字符串数据列表。为了方便用户,我启用了按键事件来上下导航生成的。用户可以使用鼠标滚动选择,或使用键盘选择项目并继续 我发现,如果要显示的数据大于一定数量,并且创建了垂直滚动条(注意:Fancybox设置了maxHeight属性),则在使用键盘向下导航列表时,如果所选项目离开fancybox窗口/对话框,滚动条不会像使用鼠标滚轮滚动那样移动以跟踪它 有人知道当我使用键盘时如何让Fancybox手动滚动吗 我尝

我正在ASP.NET MVC4 web应用程序中使用Fancybox 2.1.5来显示
中的字符串数据列表。为了方便用户,我启用了按键事件来上下导航生成的
  • 。用户可以使用鼠标滚动选择,或使用键盘选择项目并继续

    我发现,如果要显示的数据大于一定数量,并且创建了垂直滚动条(注意:Fancybox设置了maxHeight属性),则在使用键盘向下导航列表时,如果所选项目离开fancybox窗口/对话框,滚动条不会像使用鼠标滚轮滚动那样移动以跟踪它

    有人知道当我使用键盘时如何让Fancybox手动滚动吗

    我尝试过乱搞溢出css设置和fancybox滚动属性,但这没有帮助。我确定在手动导航时需要触发一个事件

    Html

    <div id='myDiv'>
        <ul>
            <li>Apple</li>
            <li>Orange</li>
            <li>Pear</li>
        </ul>
    </div>
    

    fancybox可滚动容器(属性设置为
    overflow
    的容器)需要获得
    focus
    ,然后才能使用箭头上下滚动

    作为一种解决方法,使用
    afterShow
    回调在
    .fancybox-inner
    元素上设置
    focus
    ,如下所示:

    $(".fancybox").fancybox({
        afterShow: function(){
            $(".fancybox-inner").attr("tabindex",1).focus();
        }
    });
    
    重要:注意,我们还添加了
    tabindex
    属性,以使解决方案与大多数浏览器一致。如果没有它,Chrome将无法工作,如果在内容内部单击,Firefox将失去焦点(例如,当有交互式内容时)


    选中此项,您将看到可以在显示fancybox之后使用箭头上下滚动内容。

    因为您没有关注任何输入元素,所以主div(显然)不会滚动。如果确实需要,则必须检查高亮显示元素的位置,计算其是否可见,并根据需要滚动显示该元素。

    这对我不起作用,它所做的只是移动滚动条并忽略我最初编写的代码,以便在每次按下向上或向下按钮时选择各个项目。也许我误读了问题
    有人知道我如何在使用键盘时让Fancybox手动滚动吗?
    抱歉,我猜详细信息在实际问题中。谢谢@贾尼斯。找出
  • 是否可见然后通过编程滚动容器的最佳方法是什么?
    $(".fancybox").fancybox({
        afterShow: function(){
            $(".fancybox-inner").attr("tabindex",1).focus();
        }
    });