javascript - 触发点击 div,这样它就会在 pagedown 和 pageup 上滚动

标签 javascript jquery html angularjs

当我实际使用鼠标点击我的 div 时,pageUp 和 pageDown 会滚动 div。但是,当我以编程方式触发对 div 的单击时,pageUp 和 pageDown 无法滚动 div。如何让 pageUp 和 pageDown 滚动 div 而无需用户实际单击 div?

详细信息:

我想做的是让用户 pageDown 到 div 的底部,然后再 pageDown 将下一组内容加载到 div 中并自动滚动到顶部;反之亦然。只要用户在 div 中单击,它就可以很好地工作。我正在努力做到这一点,这样他们就不必实际单击 div 即可通过 pageDown 或 pageUp 滚动。

我确信程序化点击正在发生,因为点击事件监听器被触发。我的 pageUp 监听器还可以加载前一组内容(因为滚动条从顶部开始)。

我正在 Node-Webkit (Chrome) 和 angular.js 中开发,但跨浏览器支持也是必要的。

我尝试过的事情:

$('#div').click();
$('#div')[0].click();
$('#div').trigger('click');
$('#div').focus();
$('.focusableThingInsideDiv').focus();
$('#div').scroll();  //just trying random things at this point

我也尝试过停止默认的浏览器行为并自己实现滚动(通过设置 scrollTop)。这在技术上是可行的。但是,如果可能的话,我宁愿不要覆盖默认行为。

最佳答案

向上翻页向下翻页 工作,在您单击 div 之后,因为它获得了焦点。所以,虽然它在点击后没有显示为焦点元素,但您仍然需要 $('#div').focus()。行。

棘手的部分是能够专注于 div以编程方式,您需要给它一个 tabindex .类似于 <div tabindex="0">...</div>将使焦点突然在 Chrome 中起作用。

其他浏览器(IE 和 Firefox)似乎不需要这个。 focus()将从一开始就工作,但添加 tabindex=0不会受伤。

关于javascript - 触发点击 div,这样它就会在 pagedown 和 pageup 上滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30540449/

相关文章:

jquery - 根据标题文本更改列的背景颜色

html - 如何用CSS实现自定义图标字体

javascript - jQuery getScript 问题

javascript - jQuery UI 可拖动超出事件顺序

javascript - HTML 标记中的区域蓝色轮廓?

javascript - 如果使用 Jquery SerializeArray() 序列化复选框、单选和多个选择元素(如果它们为空),如何进行序列化?

javascript - 使垂直滚动条可见,保持表头静态

html - 如何为 Google 的 AMP 页面格式插入闪电符号?

html - 仅CSS的砌体布局

javascript - 什么时候需要在 TypeScript 中声明返回函数类型?