我正在尝试将画笔添加到我编写的 d3 折线图中,该折线图已经支持悬停在rect我附加的 a 上mousemove。但是,为了避免破坏悬停功能,我需要在 this 后面初始化 d3 画笔rect,这样它就不会捕获所有鼠标事件。
为了使画笔工作,我需要将鼠标事件从悬停发送rect到它后面的 svg 元素,我已经在该元素上初始化了画笔,就像在这个示例中一样,它从画笔前面的元素中捕获事件:
.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);会引发异常:
似乎 d3brush.js正在寻找event.target.__data__.type不存在的 ,因为它不是“真实”事件。
我怎样才能避免这种情况?是否不再可能“伪造”d3 鼠标事件?
