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