Я пытаюсь добавить bru sh к написанному мною линейному графику d3, который уже поддерживает наведение через rect
, к которому я прикрепил mousemove
. Однако, чтобы не нарушить функциональность наведения, мне нужно инициализировать d3 bru sh за этим rect
, чтобы он не фиксировал все события мыши.
Для bru sh для работать, поэтому мне нужно отправлять события мыши из объекта hover rect
в элемент svg за ним, на котором я инициализировал bru sh, точно так же, как в этом примере , который фиксирует события из элементов перед bru sh:
.on('mousedown', function(){
brush_elm = svg.select(".brush").node();
new_click_event = new Event('mousedown');
new_click_event.pageX = d3.event.pageX;
new_click_event.clientX = d3.event.clientX;
new_click_event.pageY = d3.event.pageY;
new_click_event.clientY = d3.event.clientY;
brush_elm.dispatchEvent(new_click_event);
});
Однако, используя пример, который относится к 2013 году и использует d3 v3, brush_elm.dispatchEvent(new_click_event);
выдает исключение:
введите описание изображения здесь
Похоже, что brush.js
d3 ищет event.target.__data__.type
, которого не существует, потому что это не «настоящее» событие.
Как я могу этого избежать? Разве больше нельзя "подделывать" события мыши d3?