2017-02-09 3 views
0

Я пытаюсь обнаружить перекрытие различных элементов SVG на событиях mouseup, как показано в этом fiddle, используя только прямоугольные фигуры.Обнаружение множественных перекрывающихся элементов формы SVG на событиях мыши

$('svg').on('mouseup', function(evt) { 
    var root = $('svg')[0]; 
    var rpos = root.createSVGRect(); 
    rpos.x = evt.clientX; 
    rpos.y = evt.clientY; 
    rpos.width = rpos.height = 1; 
    var list = root.getIntersectionList(rpos, null); 

    for (var i = 0; i < list.length; i++) { 
    if (list[i] != evt.target) { 
     $(list[i]).mouseup(); 
    } 
    } 
}); 

Я хочу, чтобы иметь возможность обнаружить перекрытие на MouseUp между прямоугольником, кругом, а также многоугольников фигуры, как в этом fiddle я пытался с помощью но getIntersectionList() только кажется, работает только для прямоугольных форм ,

Другим способом, по-видимому, является получение корневых SVG-координат на mouseup и проверка соответствия любой из координат внутри элементов SVG.

Есть ли лучший способ для меня обнаружить пересечения нескольких элементов SVG-элементов на мыши?

+0

Когда вы говорите о пересечениях, действительно ли вы имеете в виду, какие элементы находятся под курсором? – Ian

+0

@Ian, Да. Чтобы получить список элементов под курсором. –

ответ

0

Я знаю, что Firefox не поддерживает getIntersectionList(). Я не уверен в Chrome или других браузерах.

Обходной подход описан в this other question.