当我实际使用鼠标点击我的 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/