10

我的网站广泛使用图像地图。这些图像是中世纪手稿的页面。AREA 标记的 mouseOver 事件附有一个工具提示,它显示了鼠标悬停所在行的古代脚本的现代印刷转录。

我刚刚在 Apple Store 的 iPad 上查看了我的网站。iPad 在许多方面使用起来很有趣,但是,我想知道 Apple 将鼠标事件映射到手指触摸事件。苹果可能有充分的理由这样做,但他们的选择对我来说似乎违反直觉且过于复杂。

具体来说,iPad Safari 浏览器显然同时响应了 fingerDown 和 fingerTap,而且方式不同。当我点击图像地图的某个区域时,会显示连接到 AREA 标记的鼠标悬停事件的工具提示,并且在我点击其他地方之前一直保持可见。当我将手指放在图像地图的某个区域上时,该区域改变了颜色。因此,如果 iPad Safari 检测到 mouseOver 事件处理程序,它会在 click|tap 上执行 mouseOver 代码,并且显然会阻止“click”事件传播,所以如果您还有一些连接到 click 事件的东西,它就不起作用?那正确吗?

但更重要的是,为什么不是 fingerDown 的 iPad-Safari 对应的 mouseOver?在映射 mouseOver 事件时,FingerDown 似乎比 Tap 更有可能。我本来希望以这种方式映射事物:

 MouseClick : FingerTap (i.e. finger down and then immediately up)
 MouseOver : FingerDown (finger down and stays on the spot)

如果Apple 将fingerDown 视为mouseOver 的对应物,那么工具提示可以在FingerDown 上显示并在fingerUp 上再次变为不可见,这将是mouseOut 的对应物。

也许有人可以启发我了解导致 Apple 开发这些特定的鼠标触摸事件映射的思考过程?谢谢

4

2 回答 2

10

我一直在专门研究 iPad 何时触发“鼠标悬停”事件与“点击”事件。当用户点击页面上的任意位置时,iPad 首先会触发“鼠标悬停”事件,就好像用户刚刚将鼠标光标放在该位置一样。它还在最后一个具有焦点的元素上触发“mouseout”事件。然后,据我所知,浏览器会检查是否由于“鼠标悬停”事件回调而发生了对 DOM 的任何更改。

如果 DOM 发生了变化,浏览器不会触发“点击”事件。如果用户第二次点击同一个元素,浏览器会触发“click”事件,但不会触发另一个“mouseover”事件。

另一方面,如果在用户第一次点击一个元素之后,并且在“鼠标悬停”事件完成后 DOM 没有改变,那么浏览器会触发一个“点击”事件而无需等待第二次点击。

于 2011-07-28T00:53:34.850 回答
0

我确实找到了一些可以部分解释上述行为的信息:

https://developer.apple.com/library/content/technotes/tn2010/tn2262/_index.html

尤其是见第 5 节。

似乎触摸+按住正在“选择”图像映射区域。上面的链接说可以禁用用户选择,但它没有说明在禁用用户选择的元素上使用触摸+按住手势时会发生什么。在这种情况下,如果它可以成为 mouseOver 的对应物,那就太好了。

于 2010-06-03T19:31:12.877 回答