Вопрос по google-chrome, d3.js, javascript, svg, click – d3 координаты клика относятся к странице, а не к svg - как их перевести (ошибка Chrome)

30

Когда событие находится в игре, d3.event.x задает положение координаты x щелчка мыши, но относительно всего документа HTML. Я пытался использовать jQuery's $ ('svg'). Position (), чтобы получить фактическую позицию svg, но это возвращает явно ошибочные значения.

Есть ли какой-нибудь простой способ найти позицию svg относительно страницы, которую я пропускаю? Кстати, я пользуюсь Chrome, если проблема с jQuery является неясной ошибкой браузера.

РЕДАКТИРОВАТЬ: я проверил это в Firefox и $ ('svg'). Position () возвращает правильные координаты. ?!?

Ваш Ответ

1   ответ
56

d3.event, которое является родным событием браузера, используетd3.mouse чтобы получить координаты относительно некоторого контейнера. Например:

var svg = d3.select("body").append("svg")
    .attr("width", 960)
    .attr("height", 500);

var rect = svg.append("rect")
    .attr("width", "100%")
    .attr("height", "100%")
    .on("mousemove", mousemove);

function mousemove(d, i) {
  console.log(d3.mouse(this));
}
Я ненавижу, что Chrome имеет эту проблему, но это с помощью d3.mouse () является гораздо лучшим решением. Спасибо за помощь, Майк! ballaw

Похожие вопросы