Если я вас правильно понимаю, а может и нет, вы не можете делать то, что делаете сейчас.
Сейчас у вас есть несколько тегов <span>
внутри тега <canvas>
, которые представляютданные, которые рисуются на холсте.Затем вы хотите, чтобы что-то произошло, когда вы наводите курсор на те данные, которые рисуются на холсте.
Это не так, как работает холст.Ни один из этих тегов <span>
не отображается на странице (за исключением резервного содержимого), и их события mousemove / etc не имеют отношения к поверхности холста.
Когда вы используете свои теги span для рисования изображений (или чего-либо еще)данные) на холсте вы должны отслеживать, где вы их рисуете.Тогда вам понадобится только одно mousemove
событие на самом <canvas>
, которое будет циклически перебирать список местоположений (или путей или прямоугольников), которые вы пытаетесь обнаружить.
Итак, чтобы присоединитьсобытие мыши для изображений, нарисованных на холсте, вы должны сами следить за всем, что нарисовано. События мыши на любом объекте, кроме самого Canvas, его не обрезают.Все это вы должны написать сами или использовать библиотеку.Вы указали, что больше не хотите использовать библиотеки, поэтому вот руководство по обучению тому, как сделать холст интерактивным (mousedown, mousemove, отслеживание того, что нарисовано, и т. Д.).