主页键和结束键don'在页面上创建弹出窗口时无法工作
Home and End keys don't work when popup created on page?
如果你看一下这个页面,你会看到容器中的一堆产品。如果你点击其中一个产品,就会打开一个弹出窗口,它(很可能)的高度比浏览器窗口的高度大,因此会显示一个滚动条。
弹出窗口打开后,Home和End键在按下时不会使元素滚动。但是,如果您在弹出窗口中单击,则按键有效。
我试着在打开弹出窗口后调用.focus()
和.click()
,但Home和End键仍然没有任何效果,直到我用鼠标点击弹出窗口。
为什么Home和End键在按下时不能使元素滚动,以及如何使它们工作?
focus()
实际上不会为元素提供键盘焦点,除非该元素是可聚焦的。像input
和textarea
这样的交互元素是可聚焦的,但默认情况下div
不是。但是,可以通过设置其tabIndex
属性(或tabindex
属性)使其可聚焦。
当我加载您的页面并在控制台中键入以下内容时:
$(".productPopupContainer").prop("tabIndex", "-1");
$(".productPopupContainer").focus();
主页和结束键开始工作,即使我还没有点击弹出窗口。(顺便说一句,我在Mac上使用的是最新版本的Chrome浏览器)。
focus()的jQuery文档页面对其工作原理有很好的解释。
FUN FACT:如果您不在元素上设置tabIndex
,而是读取该属性,则会得到-1:
var elem = document.getElementById("#anything");
console.log(elem.tabIndex); // prints -1
但在浏览器内部,该值实际上没有定义,因为显式地将其设置为-1会使其可聚焦,而以前没有。这意味着你实际上可以这样做,在不影响标签顺序的情况下使元素可聚焦:
elem.tabIndex = elem.tabIndex;
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 创建弹出窗口
- 创建一个方法,通过一个窗口进行迭代并获取Titanium中的所有控件
- 如何在Ol3弹出窗口中添加用javascript创建的按钮上的点击事件
- Chrome应用程序在全屏中创建新窗口-html元素不是全高的
- 为在新窗口中打开外部链接创建异常
- 单击或取消选中复选框时,如何创建弹出的自定义窗口
- 为自定义网站创建JavaScript搜索框,创建显示搜索结果的弹出窗口
- 有没有一种方法可以检测何时触发了溢出-y:auto,并因此创建一个弹出窗口
- 如何在同一浏览器屏幕中创建多个窗口
- 如何在不使用iframe或库的情况下创建剪切显示窗口区域
- 传单:如何在弹出窗口中创建链接选择器
- Chrome扩展程序:检测从后台创建窗口事件
- karma-html2js不创建窗口__html__
- 访问创建窗口
- ExtJs,从不同版本的iframe创建窗口,正确设置高度
- 修改电子浏览器窗口选项而不重新创建窗口
- Chrome扩展同步调用-仅在窗口关闭后创建窗口
- 在Chrome App中创建窗口在启动时忽略边界
- 如何使用 javascript 创建窗口实例