Javascript 如何在按下键事件后在Fancybox内滚动
我正在ASP.NET MVC4 web应用程序中使用Fancybox 2.1.5来显示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手动滚动吗 我尝
中的字符串数据列表。为了方便用户,我启用了按键事件来上下导航生成的
。用户可以使用鼠标滚动选择,或使用键盘选择项目并继续
我发现,如果要显示的数据大于一定数量,并且创建了垂直滚动条(注意: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();
}
});