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

10

我的网站广泛使用图像映射。这些图像是来自一本中世纪手稿的页面。AREA标记的mouseOver事件附有工具提示,显示鼠标悬停在其上的行的古代手写体的现代印刷体转录。

我在Apple商店的iPad上查看了我的网站。在许多方面,iPad非常好用,但是我想知道关于苹果将鼠标事件映射到手指触摸事件上的原因。苹果可能有很好的理由来做他们所做的事情,但对我来说,他们的选择似乎很不直观并且过于复杂。

具体来说,iPad Safari浏览器显然会响应fingerDown和fingerTap,并以不同的方式响应。当我点击图像映射的某个区域时,与AREA标记的mouse-over事件相关联的工具提示将显示,并保持可见状态,直到我在其他地方点击。当我按住图像映射的某个区域时,该区域的颜色会改变。因此,如果iPad Safari检测到mouseOver事件处理程序,则会在点击/轻敲时执行mouseOver代码,并显然阻止“单击”事件传播,以便如果您还将某些内容连接到单击事件,则无法正常工作。对吗?

但更重要的是,为什么不将fingerDown作为mouseOver的iPad-Safari对应项呢?当映射mouseOver事件时,FingerDown似乎是一个更有可能的候选项。我原本期望事情被映射成这样:

 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 的对应事件。

也许有人能够启发我理解苹果公司制定这些鼠标到触摸事件映射的思考过程?谢谢

2个回答

10

我一直在研究iPad何时触发"mouseover"事件和"click"事件。当用户点击页面上的任何位置时,iPad首先触发一个"mouseover"事件,就好像用户刚刚把鼠标光标放在那个位置上一样。同时,它还会在最后一个获得焦点的元素上触发一个"mouseout"事件。然后,据我所知,浏览器会检查是否由于"mouseover"事件回调而导致DOM发生了任何更改。

如果DOM有任何更改,浏览器将不会触发"click"事件。如果用户第二次点击相同的元素,则浏览器会触发一个"click"事件,但不会再触发"mouseover"事件。

另一方面,如果在用户第一次点击元素后"mouseover"事件完成后DOM没有发生任何更改,则浏览器会立即触发一个"click"事件,无需等待第二次点击。


0

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

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

请查看第5节,特别是。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接