检测鼠标实际移动的时间,而不仅仅是页面移动的时间
Detect when mouse actually moves, not just when the page moves
我在尝试在我的页面上创建导航时遇到了一个很大的问题。如果鼠标输入一个元素,那么它会选择它,然后如果你使用箭头键,它将选择相对于所选元素的元素。但是,当箭头键导致页面滚动时,这是一个问题,因为(取决于鼠标的位置)它将选择适当的元素,然后在页面移动后立即选择鼠标现在所在的项目(即使您没有移动鼠标)。
有谁知道如何解决这个问题?我尝试修补它,但我的解决方案似乎都没有奏效。任何帮助不胜感激,谢谢。
听起来您应该在mousemove
上绑定"鼠标进入时选择"事件,并在mousestop
上取消绑定该事件。 mousestop
本身并不存在,因此您必须以某种方式创建它或使用插件(至少有一些,例如 https://github.com/richardscarrott/jquery-mousestop-event/)。 我认为这将是最简单的解决方案,但您的 UI 似乎有点奇怪(您希望箭头键正常滚动页面并"选择"可能大于滚动大小的元素?
不确定我是否完全理解,但您应该能够结合使用mousemove
和keypress
事件:
$("#element").mousemove(function(e){
alert("mouse moved");
});
$("#element").keypress(function(e){
if (e.keyCode == 38 || e.keyCode == 40){ //up & down arrow keys
e.preventDefault();
}
});
尝试从检查箭头键的键盘事件处理程序返回 false:
element.onkeypress = function(ev) {
// ...
return false;
}
这将防止浏览器对事件的"默认行为",即滚动。这也适用于链接,例如:如果从链接的click
事件处理程序返回 false,则单击该链接不会自动跟随它。
相关文章:
- JS-在一段时间后水平移动图像
- JS-移动图像,暂停设置的时间,然后将图像向后移动
- 持续时间的移动UI
- HTML5 音频单击进度条可移动到其他时间
- 玩家移动速度更快,增量时间更长
- 显示当前移动时间(浮动)
- 以可在 Azure 移动服务 (Javascript) 中查询的方式保存日期时间
- jquery 移动版的最佳绑定时间
- HTML5 Phonegap移动应用程序会随着时间的推移而变慢
- 对画布上的移动形状或动画形状应用持续时间
- 检测鼠标实际移动的时间,而不仅仅是页面移动的时间
- DIV在页面加载时随计算机时间移动
- 如何在Javascript/jQuery中获取鼠标移动事件的开始时间
- 移动HTML5应用程序-确定用户的日期/时间偏好
- 移动鼠标时更改视频的时间
- 使用基于时间的移动获得起伏的移动
- 我如何移动一个图像从左到右和从右到左在javascript无限的时间
- Jquery-在特定时间后自动移动滚动条到特定位置
- jQuery移动端输入时间带步
- 我如何提交表单,并在同一时间移动到下一页