当页面加载后鼠标指针已悬停时触发鼠标悬停
Trigger onMouseOver when mouse pointer already is over after page load
我有几个页面都非常相似。它们有一些javascript翻转链接(图像是预加载的,然后有一个onMouseOver事件调用图像交换函数,最后,有一个onMouseOut事件来恢复原始图像)。
当用户单击指向另一个页面的翻转链接时,该翻转链接位于完全相同的位置,新页面上的图像将加载为"over"状态。在Chrome和Safari中并非如此(IE和Firefox按预期工作)。
所以。。。在页面加载时,有没有办法检查鼠标是否已经悬停在图像上以立即交换它?像"OnMouseAlreadyOver"这样的东西?
谢谢。
如果你使用jQuery,它可以毫无问题地工作!
http://jsfiddle.net/beuae
(不仅适用于按钮,也适用于div)
实际上,jQuery是一个非常好的框架,它确保一切按预期进行,并且跨浏览器。这个例子证实了这一点。
W3C 标准说
鼠标悬停 = 脚本 [CT]
当指针设备移动到元素上时,将发生 onmouseover 事件。此属性可用于大多数元素。鼠标移动 = 脚本 [CT]
当指针设备在元素上移动时,将发生 onmousemove 事件。此属性可用于大多数元素。
mouseover
在移动到对象的边界时触发。 当鼠标已经悬停在元素上时,会发生mousemove
。
您可能需要使用onmousemove
(甚至两者兼而有之)。
您可能需要根据元素位置和鼠标光标位置实际进行计算。
//Get Mouse Position
document.onmousemove=getMouseCoordinates;
function getMouseCoordinates(event){
ev = event || window.event;
mouseX = ev.pageX;
mouseY = ev.pageY;
}
如果不将变量传递到其他页面或使用 cookie 来跟踪悬停的页面,您就不能这样做(如果人们确实更改了鼠标位置,这将故障转移)
理论上,您可以检查鼠标位置和按钮位置,但是除非触发事件,否则无法获取鼠标位置,因此鼠标必须移动,如果它移动,则应该触发CSS :hover。
这是一个小问题,我怀疑大多数人会点击一个链接,等待下一页,然后期望该链接悬停并准备再次点击(为什么没有人会继续点击同一个按钮,除非它做不同的事情)
从用户体验的角度来看,我想知道webkit在这里没有最好的方法,为什么要将一个页面的操作移植到另一个页面。
您可以使用document.getElementFromPoint(mouseX, mouseY)
来获取元素,但获取光标位置的唯一方法是通过事件。问题是,唯一的事件是单击和鼠标移动,这需要用户从一开始就输入,这是您要避免的。
简而言之,不,这不可能用JavaScript做。你只能使用 CSS。
- 当鼠标悬停在文本中的单词上时显示警报
- d3.js鼠标悬停鼠标输出问题
- 悬停(鼠标离开)方法不显示效果
- 为什么addEventListener只执行我的函数,而不为其创建鼠标悬停/鼠标打开事件
- 在鼠标悬停/鼠标出类中的任何元素时更改元素 ID
- 检测鼠标悬停/鼠标单击,无论 Z 顺序/图层级别如何
- 悬停/鼠标悬停功能冲突
- 子元素的 JavaScript 鼠标悬停/鼠标退出问题
- 在 iPad 上触发悬停/鼠标退出/模糊
- 如何通过按钮单击和鼠标悬停/鼠标退出显示和隐藏节点文本?D3/JS.
- 背景图像在悬停/鼠标悬停时消失,菜单在IE中不起作用
- jQuery鼠标悬停/鼠标悬停将不适用于Live
- jQuery-悬停以在刷新时触发悬停/鼠标悬停
- 悬停/鼠标悬停未在元素内部的每次移动中激活
- HighCharts条形图:悬停鼠标时显示条形值
- 鼠标悬停/鼠标离开,鼠标进入/鼠标离开,鼠标悬停闪烁问题
- 滚动时未触发鼠标悬停/鼠标输入
- JavaScript-如何在鼠标悬停/鼠标悬停上同时更改TR中所有TD的背景颜色
- 记住并在悬停鼠标悬停后显示以前活动的导航选项卡
- JavaScript延迟CSS悬停/鼠标悬停效果