Начиная с Raphael 2.0.2, в Raphael и Internet Explorer (все версии) существовала проблема, когда различные манипуляции с путем, такие как сброс преобразования, .toFront()
или .toBack()
, вызывались из hover()
во время зависания.вызывает бесконечные циклы наведения мыши и / или пропускает зависания.
Хотя hover
в основном работает нормально в IE для mouseout, я обнаружил, что есть несколько вещей, которые могут сбить его с толку, вызываяа) игнорировать указатели мыши, как вы описали, и б) рекурсивно инициировать событие наведения мыши, так что если вы поместите туда console.log, консоль инструментов разработчика IE сломается и станет серой ... что иногда, кажется, также останавливает распознавание указателей мыши.
Вот вещи, с которыми я столкнулся, которые вызывают это:
- Сброс преобразования, из-за которого элемент перемещается из-под мыши, затем повторное его применение, помещая элементназад под курсором.non-IE продолжает, как будто ничего не происходит, и работает нормально, IE волнуется, как описано выше.
- .toFront () и .toBack () - non-IE распознает перемещенный элемент как тот же элемент в том же самомПоложение XY, IE волнуется, как описано выше.
Есть некоторые наблюдения и демонстрации в this jsfiddle (читать и раскомментировать различные комментарии).
Хороший обходной путь - использовать какой-нибудь флаг, например, например: path.data ('hoverIn', true); on mouse in and 'path.data( 'hoverIn', false );
при наведении мыши, затем обернуть любые .toFront()
или нарушающие преобразования впроверьте это !path.data( 'hoverIn' )
, чтобы оно могло произойти только один раз, пока не произойдет отключение мыши.Или сохраните ссылку на самый последний обнаруженный путь где-то после toFront()
или чего-либо еще, затем не toFront()
или что-либо еще, если этот путь также является последним наведенным.