iPad Safari将鼠标事件映射到图像映射中的触摸事件

时间:2010-06-02 23:10:52

标签: events ipad safari tooltip imagemap

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

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

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

但更重要的是,为什么不将mouseDver的iPad-Safari对应的fingerDown?映射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进行这些特定的鼠标触摸事件映射? 感谢

2 个答案:

答案 0 :(得分:10)

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

如果对DOM进行了更改,则浏览器不会触发“单击”事件。如果用户第二次点击相同的元素,浏览器会触发“点击”事件,但不会触发另一个“鼠标悬停”事件。

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

答案 1 :(得分:0)

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

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

见第5节,特别是。

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

相关问题