Поддерживаются ли сенсорные события в HTML-картах изображений в iOS/Mobile Safari

Может ли кто-нибудь сказать мне окончательно, поддерживают ли карты изображений html события касания в Mobile Safari? Мне нужно использовать карты изображений, потому что у меня есть кликабельные области неправильной формы. Мое тестирование показывает, что события мыши поддерживаются (но ограниченным образом), а события касания вообще не срабатывают.

Я сделал этот самый простой тест:

http://jsfiddle.net/DsRhu/6/

<img id="polygon_images" src="http://s18.postimg.org/7xvo1f9tl/polygons.png" alt="Polygons" border="0" usemap="#my_polygons" />

<map id="my_polygons" name="my_polygons">
<area shape="poly" alt="blue" title="Mouse" coords="95,40,171,99,139,189,37,188,14,96"  onmousedown="writeMessage(event, 'm-down');" onmouseup="writeMessage(event, 'm-up');" onmousemove="writeMessage(event, 'm-move');" onmouseout="writeMessage(event, 'm-out');" />
<area shape="poly" alt="red" title="Touch" coords="269,42,345,96,317,191,215,189,193,97"   ontouchstart ="writeMessage(event, 't-start');" ontouchend="writeMessage(event, 't-end');" ontouchmove="writeMessage(event, 't-move');" ontouchcancel="writeMessage(event, 't-cancel');"  />
</map>

<div id="message_box"></div>

Синий многоугольник настроен на события мыши. Красный многоугольник предназначен для сенсорных событий.

Когда я просматриваю эту страницу в обычном Safari, щелчок или наведение курсора на синий многоугольник запускает события, как я и ожидал. И, конечно же, красный многоугольник ничего не делает (поскольку на десктопе сенсорные события не поддерживаются)

Однако, когда я просматриваю эту страницу на своем iPad, синий многоугольник запускает тройку движений мыши, опускания мыши, подъема мыши при одном нажатии и больше ничего. Что еще хуже, прикосновение к красному многоугольнику ничего не дает!

Я очень надеюсь, что я просто пропустил что-то простое, но если нет, мне бы очень хотелось точно знать, что происходит.


person g-dog    schedule 12.09.2013    source источник


Ответы (1)


Прошло несколько месяцев, и никто другой не дал более определенного ответа, поэтому я подумал, что лучше всего ответить своими собственными выводами:

1) События касания на картах изображений НЕ ПОДДЕРЖИВАЮТСЯ в Mobile Safari вообще.

2) Несмотря на то, что события мыши поддерживаются, они не обеспечивают достаточного контроля, чтобы сделать что-то большее, чем одиночный выбор (как я уже упоминал выше, одновременная активация операций mousemove, mousedown и mouseup) — и даже тогда он не такой отзывчивый, как хотелось бы мне (или кому-то еще ;).

Решение:

В итоге я поместил изображение в тег div (который поддерживает все события касания), а затем выполнил собственное обнаружение попаданий на основе исходных данных карты изображения.

Не самое идеальное решение, но оно работало и работало хорошо. Надеюсь, это поможет кому-то еще...

person g-dog    schedule 14.12.2013